Flutter Dart立即分配给变量还是在构造函数中分配给变量?
在Dart中,立即赋值与像Java一样在构造函数中赋值有区别吗Flutter Dart立即分配给变量还是在构造函数中分配给变量?,flutter,dart,Flutter,Dart,在Dart中,立即赋值与像Java一样在构造函数中赋值有区别吗 class Example { int x = 3; } vs 我这样问是因为当我使用颤振并试图将使用setState的函数分配给变量时,前一种方法是不可能的,但后一种方法是可能的。在你的小例子中,这无关紧要 通常,可以通过以下几种方式初始化实例变量: 内联(字段初始值设定项) 类示例1{ T x=数值; } 优点: 直接、简洁 成员将在所有构造函数中初始化 可用于初始化final或不可为空的成员 成员是在调用基类构造
class Example {
int x = 3;
}
vs
我这样问是因为当我使用颤振并试图将使用setState的函数分配给变量时,前一种方法是不可能的,但后一种方法是可能的。在你的小例子中,这无关紧要 通常,可以通过以下几种方式初始化实例变量: 内联(字段初始值设定项)
类示例1{
T x=数值;
}
优点:
- 直接、简洁
- 成员将在所有构造函数中初始化
- 可用于初始化
或不可为空的成员final
- 成员是在调用基类构造函数之前初始化的,如果基类构造函数调用由派生类重写的成员函数,则这可能很重要
- 不能依赖于构造参数
- 通常不能依赖于
,因为初始化发生在此
生效之前(即,不能依赖于其他实例成员)。(.这需要启用空安全功能。)此
类示例2{
tx;
示例2():x=值;
}
优点:
- 可用于初始化
或不可为空的成员final
- 成员是在调用基类构造函数之前初始化的,如果基类构造函数调用由派生类重写的成员函数,则这可能很重要
- 可以利用构造参数
- 初始化变量始终引用成员变量,而不是构造函数参数
- 如果类有多个构造函数,则需要重复初始化,或者构造函数应该重定向到公共构造函数
- 无法依赖于
,因为初始化发生在此
生效之前(即,无法依赖于其他实例成员)此
- 只能初始化封闭类的成员。因为初始值设定项列表是在调用基类构造函数之前执行的,所以它们不能设置基类成员
类示例3{
tx;
例3(){
x=值;
}
}
优点:
- 可以利用构造参数
- 可用于执行更复杂的初始化,例如无法通过单个表达式初始化成员的情况
- 可以使用此(即,可以使用其他实例成员)
- 可用于设置基类成员
- 不能用于初始化
或不可为空的成员final
- 如果类有多个构造函数,则需要复制初始化或重构初始化代码(例如,但不限于重定向到公共构造函数)
- 成员在调用基类构造函数后初始化
- 如果构造函数有一个隐藏成员变量的参数,则很容易意外引用该参数而不是成员。(有关详细信息,请参阅。)
直接的内联初始化首先发生,然后是初始化列表,然后是构造函数体。另请参见解释此仅对对象初始化的后期阶段有效的原因。感谢您提供此信息并使其保持最新、信息丰富且组织有序。
class Example {
int x;
Example() {
x = 3;
}
}