Ravi Setva的公认答案有助于解决查询,但这里是关于为什么方法1和2工作的解释: 1.允许为空:默认情况下,Dart是“Non-nullable”,这意味着一个变量不能包含null值,除非它首先用null初始化。这具有编译器优化的优点,可以标记在整个程序生命周期中不能为null的东西。然而,使用?允许null s被使用。所以这取决于我们使用这个原则,Dart没有强迫我们。 1.惰性初始化:这是一个概念,基本上意味着变量可以在声明之后立即初始化。这是通过在变量声明期间使用late关键字来实现的。这是出于许多复杂的原因,其中最简单的原因是为了防止在声明变量期间进行繁重的操作,以简化和优化性能,并为以后的时间标记这些操作。它实际上是需要的。
4条答案
按热度按时间ifmq2ha21#
在 dart 零位安全特性中
1.或者通过
?
使引擎变量可为空,1.或者添加
late
关键字来惰性地初始化它,1.或者在构造函数的initialize块中初始化变量。
x759pob22#
更新,用于初始化构造函数中的变量:
huus2vyu3#
Ravi Setva的公认答案有助于解决查询,但这里是关于为什么方法1和2工作的解释:
1.允许为空:默认情况下,Dart是“Non-nullable”,这意味着一个变量不能包含
null
值,除非它首先用null
初始化。这具有编译器优化的优点,可以标记在整个程序生命周期中不能为null的东西。然而,使用?
允许null
s被使用。所以这取决于我们使用这个原则,Dart没有强迫我们。1.惰性初始化:这是一个概念,基本上意味着变量可以在声明之后立即初始化。这是通过在变量声明期间使用
late
关键字来实现的。这是出于许多复杂的原因,其中最简单的原因是为了防止在声明变量期间进行繁重的操作,以简化和优化性能,并为以后的时间标记这些操作。它实际上是需要的。jm81lzqq4#
使用late关键字可以创建一个null变量。
Ex:late String engine;
“?”用于生成空值。
例如:String?engine;