dart:将类构造函数标记为const是什么意思

Pet*_*StJ 7 dart

所以我看到这样的代码:

class Whatever {
  final String name;
  const Whatever(this.name);
}
Run Code Online (Sandbox Code Playgroud)

构造函数被标记为事实会发生什么变化const?它有什么作用吗?

我读了这个:

对要用作编译时常量的变量使用const。如果const变量在类级别,则将其标记为静态const。(实例变量不能为常量。)

但这对于类构造函数似乎没有意义。

Gün*_*uer 7

  • 构造函数不能具有构造函数主体。
  • 所有成员都必须是最终成员,并且必须在声明时或通过构造函数参数或初始化程序列表进行初始化。
  • 您可以在仅允许使用常量的情况下使用此类的实例(注释,可选参数的默认值,...)
  • 您可以创建常量字段,例如static const someName = const Whatever()

如果该类没有const构造函数,则不能用于初始化常量字段。我认为在构造函数中指定它很有意义。您仍然可以在运行时使用创建实例new Whatever()或添加工厂构造函数。

也可以看看

“旧样式”(仍然有效)枚举是如何使用const /sf/answers/1109818531/的一个很好的例子