推荐答案
在 Dart 中,var
、final
和 const
都用于声明变量,但它们的行为和用途有所不同:
var
:用于声明一个变量,类型由编译器根据初始值自动推断。变量的值可以在后续代码中修改。final
:用于声明一个只能被赋值一次的变量。一旦赋值后,变量的值不能再改变。final
变量的值在运行时确定。const
:用于声明一个编译时常量。const
变量的值必须在编译时确定,并且在运行时不能改变。const
还可以用于创建编译时常量的对象。
本题详细解读
var
- 类型推断:
var
声明的变量类型由编译器根据初始值自动推断。例如:var name = 'Alice'; // 类型推断为 String
- 可变性:
var
声明的变量可以在后续代码中重新赋值,但类型必须与初始推断的类型一致。name = 'Bob'; // 合法 name = 42; // 非法,类型不匹配
final
- 不可变性:
final
声明的变量只能被赋值一次,赋值后不能再改变。例如:final age = 30; age = 31; // 非法,final 变量不能重新赋值
- 运行时确定:
final
变量的值可以在运行时确定,例如通过函数调用或表达式计算。final currentTime = DateTime.now(); // 合法,值在运行时确定
const
- 编译时常量:
const
声明的变量必须在编译时确定其值,并且在运行时不能改变。例如:const pi = 3.14; pi = 3.14159; // 非法,const 变量不能重新赋值
- 编译时常量对象:
const
还可以用于创建编译时常量的对象,例如:const list = [1, 2, 3]; // 创建一个编译时常量的列表
- 编译时确定:
const
变量的值必须在编译时确定,不能依赖于运行时的计算。const currentTime = DateTime.now(); // 非法,值不能在编译时确定
总结
var
:用于声明可变变量,类型由编译器推断。final
:用于声明不可变变量,值在运行时确定。const
:用于声明编译时常量,值在编译时确定。