在Dart中,立即赋值与在Java中的构造函数中赋值有区别吗?
class Example {
int x = 3;
}
vs
class Example {
int x;
Example() {
x = 3;
}
}
我问,因为当我使用Flutter并尝试将使用setState的Function分配给变量时,前一种方法是不可能的,而后一种方法是可能的。
答案 0 :(得分:4)
对于您而言,无关紧要。
通常,您可以通过以下几种方式初始化实例变量:
class Example1 {
T x = value;
}
优势:
final
个成员。缺点:
this
,因为初始化发生在this
生效之前。class Example2 {
T x;
Example2() : x = value;
}
优势:
final
个成员。缺点:
this
,因为初始化发生在this
生效之前。class Example3 {
T x;
Example3() {
x = value;
}
}
优势:
this
。缺点:
final
个成员。我可能忘记了一些要点,但我认为这应该涵盖主要要点。
直接内联初始化首先发生,然后是初始化列表,然后是构造函数主体。另请参见Difference between assigning the values in parameter list and initialiser list,其中解释了this
为什么仅对对象初始化的后续阶段有效。