06Dart:const和final

const和final定义的都是常量,值不能改变 ,并且在声明的时候就必须初始化

如果您从未打算更改一个变量,那么使用 final 或 const,不是var,也不是一个类型。一个 final 变量只能被初始化一次; const变量是一个编译时常量,(Const变量是隐式的final),final的顶级或类变量在第一次使用时被初始化。被final或者const修饰的变量,变量类型可以省略,建议指定数据类型。被 final 或 const 修饰的变量无法再去修改其值。flnal 或者 const 不能和 var 同时使用,常量如果是类级别的,请使用 static const


差别:

const定义的是编译时常量,只能用编译时常量来初始化,const关键字不只是声明常数变量,您也可以使用它来创建常量值,以及声明创建常量值的构造函数,任何变量都可以有一个常量值。

final定义的常量可以用变量来初始化,被final修饰的顶级变量或类变量在第一次声明的时候就需要初始化

final time = new DateTime.now();//Ok

const time = new DateTime.now();//Error,new DateTime.now()不是编译时常量const常量

var、final等在左边定义变量的时候,并不关心右边是不是常量

但是如果右边用了const,那么不管左边如何,右边都必须是常量

const list = const[1,2,3];//Ok

const list =[1,2,3];//Error

final list =[1,2,3];//Ok

final list = const[1,2,3];//Ok

在常量表达式中,该运算符的操作数必须为'bool'、'num'、'String'或'null', const常量必须用conat类型的值初始化。

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

推荐阅读更多精彩内容