Dart中动态和对象类型的区别

473 阅读1分钟

动态和对象是Dart中两个预定义的类型

dynamic是一种动态类型,它接受任何类型的值,并禁用类型检查 object是一种类型,它接受任何不可归零的类型。

本教程解释了Dart中动态和对象类型的区别。

动态和对象的区别

让我们通过例子来看看动态和对象的区别。

动态变量可以被分配任何类型的值,这些变量可以被分配给任何类型的变量。

void main() {
  //dynamic variable assigned with string first
  dynamic name = "john";

// you can assign dynamic variable to any variable
  String fname = name;
}

对于一个对象,你可以声明任何数据的变量。

当这些变量被分配到另一种类型的变量时,你需要进行类型化处理。

下面的例子,由于int值是一个对象的子类型,你可以声明和分配一个int值。 声明了一个int变量,分配给对象变量时,建议使用类型化的方法。

void main() {
  Object age = 25;

  int age1 = age as int;
  
}
  • 空值

动态变量可以是空值,对象变量不能是空值。

main() {
  dynamic str = null; // no errors
  Object obj = null; // Compile time error
}
  • 访问方法和属性

当你创建一个动态类型的雇员类的实例时,你可以访问其方法和属性。 同样的,不能访问的方法和属性也是不行的

class Employee {
  printEmp() => print("Employee Object");
}

void main() {
  dynamic a = new Employee();
  Object b = new Employee();
  a.printEmp(); // No error
  b.printEmp(); // Compile error
}