动态和对象是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
}