Dart汇总请点击这里
var定义的类型是不可变的,dynamic和object类型是可以变的,而dynamic 与object 的最大的区别是在静态类型检查上
void main() {
//var
var str = "hello world";
print(str.runtimeType);//String
print(str);//hello world
//str=1会报错
str=1;
//dynamic
dynamic mic = "hello world";//编译时不会揣测数据类型,但是运行时会推断
print(mic.runtimeType);//String
print(mic);//hello world
//但是这样的坏处就是会让dart的语法检查失效,所以有可能会造成混乱而不报错
//所以不要直接使用dynamic
mic.foo();
//通过它定义的变量会关闭类型检查,这段代码静态类型检查不会报错,但是运行时会crash,因为mic并没有foo()方法,
// 所以建议大家在编程时不要直接使用dynamic
mic=1;
print(mic.runtimeType);//int 说明类型是可变的
print(mic);//1
//Object
Object object = "hello world";
print(object.runtimeType);//String
print(object);//hello world
object=1;
print(object.runtimeType);//int 说明类型是可变的
print(object);//1
//object.foo();静态类型检查会运行报错会报错
object.foo();
}
本文深入探讨了Dart语言中var、dynamic与object类型的特性及应用。解析了var定义的不可变类型,dynamic与object作为可变类型的区别,尤其是在静态类型检查上的表现。通过实例展示了不同类型在运行时的行为差异。
134

被折叠的 条评论
为什么被折叠?



