前言
本文整理Final和Const在Dart中的区别
一、相同点
- final、const必须初始化
- final、const只能赋值一次
二、不同点
- final可修饰实例变量、const不可以修饰实例变量
- 访问类中const修饰的变量需要static修饰
- const修饰的List集合任意索引不可修改,final修饰的可以修改
- const 用来修饰变量 只能被赋值一次,在编译时赋值
- final 用来修饰变量 只能被赋值一次,在运行时赋值
- final 只可用来修饰变量, const 关键字即可修饰变量也可用来修饰 常量构造函数
例如
const PI=3.14;
final PI=3.14123;
两种都可,因为这是初始时就已经赋值了
但是
final Date=new DateTime.now();
const Date=new DateTime.now(); ×
下方的const则不行,因为DateTime.now()是运行时才能进行赋值,换句话说,笔者理解是:
1.什么东西编译时就能确定,且不用运行时再进行赋值确定,就用const
2.什么东西运行才能确定,且一经赋值不可修改,就用final