flutter var,dynamic,object区别

1,var

当使用var声明并定义变量时.如:


var a ="str";

a =1;

此时当编写 a = 1;时,提示错误,是因为使用var变量一旦赋值类型便会确定不能更改。

而我们在编码时发现,当如下时,却不回报错。


var a;

a ="str";

a =1;

为什么呢?

这是因为var声明变量的同时未进行初始化,此变量的类型会被推断为dynamic动态类型。

2,dynamic

在运行时由系统根据该变量的 赋值 自动 推断该变量的数据类型


dynamic b ="a";

b ="str";

print(b.runtimeType);

b =1;

print(b.runtimeType);

b.foo();//编译时静态检查不会报错,但运行时会crash

我发现,在定义时不管是否赋值,之后的类型都是可以改变的。

但是,如上,当我们对dynamic变量调用一个本不属于它自己的函数时foo(),编译期间并不会报错,但是在运行时会crash。

3,Object

类型跟dynamic一样。也是可变的,但是Object会在编译时静态检查,如 :


Object c;

c ="str";

c =1;

// c.foo();//编译时就会报错,无法运行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容