0

我从文档中复制这个

// 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();

但是我在null-safe dartpad中运行下面的代码,它可以编译。

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

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

4

1 回答 1

1

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

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);
}

原因是var x = 42“推断为int”而不是int?

在您的示例中,发生的事情是var x = null已解决,因此x被视为类型dynamic,因为 Dart 不知道您尝试使用什么类型。既然dynamic可以有价值null,你就可以走了。

于 2020-10-09T14:22:05.037 回答