📅  最后修改于: 2023-12-03 15:00:20.447000             🧑  作者: Mango
在Dart中,无法在初始化程序中访问实例成员(Instance member),例如:
class User {
String name;
User(this.name) {
print(name); // 在初始化程序中访问实例成员,会报错。
}
}
上述代码会报错:Dart 无法在初始化程序中访问实例成员“name”
。 这是因为在Dart中,初始化程序是在对象构造之前执行的,而实例成员必须在对象构造之后才能访问。
要解决这个问题,可以使用初始化列表(Initializer list)来初始化实例成员,例如:
class User {
final String name;
User(this.name);
}
void main() {
User user = User('John');
print(user.name);
}
在上述代码中,我们将name
声明为final
类型,然后使用构造函数的参数来初始化它。这样,就可以避免在初始化程序中访问实例成员引发的错误。
另外,如果需要在初始化程序中使用实例成员,可以考虑将它们声明为static
类型,这样就可以在初始化程序中访问它们了,例如:
class User {
static String name;
User() {
print(User.name);
}
}
void main() {
User.name = 'John';
User user = User();
}
在上述代码中,我们将name
声明为static
类型,然后在main
函数中给它赋值。在User
类的构造函数中,通过User.name
访问了name
实例成员。