flutter dynamic、var、Object三者的区别

dynamic类型

dynamic:是所有Dart对象的基础类型, 在大多数情况下,通常不直接使用它,
通过它定义的变量会关闭类型检查,这意味着 dynamic x = 'hal';x.foo();
这段代码静态类型检查不会报错,但是运行时会crash,因为x并没有foo()方法,所以建议大家在编程时不要直接使用dynamic。


1586226410341.jpg

var类型

var:是一个关键字,意思是“我不关心这里的类型是什么。”,系统会自动推断类型runtimeType。


1586226589732.jpg

Object类型

Object:是Dart对象的基类,当你定义:Object o=xxx;时这时候系统会认为o是个对象,你可以调用o的toString()和hashCode()方法
因为Object提供了这些方法,但是如果你尝试调用o.foo()时,静态类型检查会进行报错;


1586226664559.jpg

综上不难看出dynamic与Object的最大的区别是在静态类型检查上。当然上面截图是编译的截图,这里是为了方便展示,在我们写代码的时候编辑器就会提示报错。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容