Kön*_*Wey 4 constructor dart flutter
有人可以解释一下,常量构造函数有什么优点吗?如果我有一个 StatefulWidget
class X extends StatefulWidget {
const X(this.a, this.b,...);
A a;
B b;
...
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么const使用。如果我理解正确的话,const意味着它在编译时是已知的,但是它的用途是什么?通常属性a、b等在编译时是未知的,但在运行时是未知的,那么构造函数有什么意义呢const?
您当前的代码不能有const构造函数,因为类中的某些成员变量未标记为final。
构造函数的目的const是,如果您在编译时使用相同的参数创建同一类的多个实例(因此所有参数都可以由编译器确定,并且不依赖于运行时),它将共享内存中的相同实例。这是允许的,因为所有成员变量都是final.
因此,优点是在特定情况下(如 中的一些类dart:convert)潜在的性能和内存改进。但是您必须const像这样调用构造函数const MyClass();才能获得此const行为。否则, aconst仍然可以像普通构造函数一样使用来获取该类的普通实例。
就我个人而言,我会说,如果您有一个仅包含final指向其他const对象的变量的类,那么实际上没有理由不创建const构造函数,即使它永远不会被使用。但您通常只能对简单的数据类执行此操作。
但不创建构造函数也完全可以const。
| 归档时间: |
|
| 查看次数: |
3109 次 |
| 最近记录: |