在Dart中,const和final关键字之间有什么区别?


当前回答

答案就在图像本身。

其他回答

常量

Value必须在编译时已知,const birthday = "2008/12/25"初始化后不能更改。


最后

值必须在运行时已知,最终生日= getBirthDateFromDB()初始化后不能更改。

何时使用哪个关键字?

一个简单的例子: 使用final:如果你不知道它在编译时的值是多少。例如,当您需要从API获取数据时,就会在运行代码时发生这种情况。

使用const:如果您确定在运行代码时不会更改某个值。例如,当你声明一个始终保持不变的句子。

https://itnext.io/difference-between-const-and-final-in-dart-78c129d0c573

dart中的Final和const很容易混淆,以至于我们认为它们是相同的。

让我们来看看它们的区别:

附注:我包括图像而不是文本,因为我不能将信息制成表格 在Stackoverflow .md格式轻松。

const是一个编译时常量。

final是一个运行时常数。

Const表示它的初始值必须是固定的,不能是动态值;

Final意味着它的初始值必须是固定的,但可以是一个动态值,等于具有固定值的var。

代码演示

常量

void main() {
  const sum = 1 + 2;
  // ✅ const can not change its value
  print("sum = ${sum}");
  // ⚠️ Const variables must be initialized with a constant value.
  const time = new DateTime.now();
  // ❌ Error: New expression is not a constant expression.
  print("time = ${time}");
}

最后

// new DateTime.now();
// dynamic timestamp

void main() {
  final sum = 1 + 2;
  // ✅ final can not change its value
  print("sum = ${sum}");
  final time = new DateTime.now();
  // ✅ final === var with fixed value
  print("time = ${time}");
}

截图

refs

https://dart.dev/guides/language/language-tour#final-and-const