Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart初始化最后一个变量_Dart - Fatal编程技术网

Dart初始化最后一个变量

Dart初始化最后一个变量,dart,Dart,我在用dart编写构造函数时遇到了一个问题。我有一个带有两个最终变量的类,在构造函数中初始化它们,以下是错误的,因为最终变量没有setter方法: class Person{ final String name; final int age; // Error Person(String name, int age) { this.name = name; this.age = age; } } 但这是正确的,为什么 class Person{ fi

我在用dart编写构造函数时遇到了一个问题。我有一个带有两个最终变量的类,在构造函数中初始化它们,以下是错误的,因为最终变量没有setter方法:

class Person{
  final String name;
  final int age; 

  // Error
  Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
}
但这是正确的,为什么

class Person{
  final String name;
  final int age; 

  // Correct
  Person(String name, int age): this.name = name, this.age = age;
}

当构造函数主体被执行时,
final
字段已经被密封

构造函数初始值设定项列表在超类的构造函数初始值设定项之前执行

之后将执行构造函数体。构造函数体允许像从字段读取一样执行任意代码。这就是为什么此时必须已经完成最终字段的初始化,否则可以从尚未初始化的最终字段读取

构造函数初始值设定项列表是支持的窗口,可以在其中初始化最终字段。它不允许读取此(显式或隐式),因此是安全的


这只是确保对象初始化始终以可预测的方式进行的一种措施。

因此,无法初始化需要引用此的
最终
变量?在这里:?不,那是不可能的。