以下代码出现错误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));

}

而以下内容没有,奇怪的是,当identical(myconst1, myconst2)确实只有const构造函数时,false返回TestConst吗? :
class TestConst {
  final num x;
  final num y;
  const TestConst(this.x, this.y);
}


void main() {

  TestConst myconst1 = TestConst(1,2);
  TestConst myconst2 = TestConst(1,2);

  print(identical(myconst1, myconst2));

}

最佳答案

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

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



...

10-08 17:52