为什么使用 'var' 声明的变量可以在空安全飞镖中为 null?



我正在从文档中复制这个

// In null-safe Dart, none of these can ever be null.
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();

但我正在一个空安全的dartpad中运行下面的代码,它可以编译。

void main() {
var x = null;
print(x);
}

这是文档错误还是我遗漏了什么?

您的示例与文档试图解释的内容并不接近。试试这个:

void main() {
var x = 42;
x = null; // Error: A value of type 'Null' can't be assigned to a variable of type 'int' - line 3
print(x);
}

原因是CCD_;推断为CCD_ 2";而不是CCD_ 3。

在您的示例中,var x = null被解析,因此x被视为类型dynamic,因为Dart不知道您要使用什么类型。由于dynamic可以具有值null,所以您可以使用它。

最新更新