为什么在dart中的赋值运算符之后使用const关键字?

时间:2019-08-31 13:59:23

标签: flutter dart

我正在学习Flutter(大部分来自Youtube),而在学习它的同时,我看到许多教练使用了这样的陈述,

final SomeClass someVariable = const SomeClass(withSomeValue);

令我烦恼的是,为什么要在赋值运算符之后使用const关键字,因为我们已经将其设为final并且我已经知道final关键字用于定义一个常数那么const在这里表示什么?

2 个答案:

答案 0 :(得分:3)

在这里,对象分配仅发生一次,因此对性能有好处。

final Test test = const Test();
final Test test2 = const Test();

这里发生了两次。

final Test test = Test();
final Test test2 = Test();

答案 1 :(得分:2)

这是对不可变对象进行的内存优化。

const个实例被共享:

final a = const Whatever();
final b = const Whatever();

print(identical(a, b)); // true

在此代码段中,ab共享相同的对象实例,因此只能分配一次。