const构造函数创建非const类对象?

时间:2019-05-09 15:33:03

标签: dart

以下代码出现错误df.index.name = ''

Error: Cannot invoke a non-'const' constructor where a const expression is expected.

而以下命令没有,奇怪的是,class TestConst { final num x; final num y; TestConst(this.x, this.y); } void main() { TestConst myconst1 = const TestConst(1,2); TestConst myconst2 = const TestConst(1,2); print(identical(myconst1, myconst2)); } 实际上只有const构造函数时,identical(myconst1, myconst2)返回false呢? :

TestConst

1 个答案:

答案 0 :(得分:2)

构造函数上的

const意味着构造函数可以创建一个const对象(如果调用站点选择加入,并且所有构造参数也都是{{1} }),而不仅仅是创建const对象。

Language Tour does mention this(但不是很详细):

  

常量构造函数并不总是创建常量。有关详细信息,请参见using constructors上的部分。

...

  

某些类提供constant constructors。要使用常量构造函数创建编译时常数,请将const关键字放在构造函数名称之前: