【发布时间】:2021-05-20 07:08:06
【问题描述】:
我在使用 dart 中的 null 安全时遇到问题。
void main() {
List<String>? testlist;
testlist?.add('null test');
print(testlist);
}
为什么打印出来的testlist 还是空的?
【问题讨论】:
标签: dart dart-null-safety
我在使用 dart 中的 null 安全时遇到问题。
void main() {
List<String>? testlist;
testlist?.add('null test');
print(testlist);
}
为什么打印出来的testlist 还是空的?
【问题讨论】:
标签: dart dart-null-safety
您的testlist 仍然为空,因为您将其定义为可为空且未对其进行初始化。
因此,在向您的testlist 添加条目时,同时调用testlist?.add('null test');。如果testlist 为空,将执行检查。如果为 null,则将跳过对 add 的调用。在您的情况下,它始终为空。
因此,在您的代码行testlist?.add('null test'); 中可视化空条件运算符。也可以写成:
List<String>? testlist;
// testlist?.add('null test');
if(testlist != null) {
testlist.add('null test');
}
print(testlist);
如果你想添加字符串,你必须初始化你的testlist:
List<String>? testlist = [];
或者,如果可能的话,您可以避免为空并将您的代码编写为:
List<String> testlist = [];
testlist.add('null test');
print(testlist);
【讨论】:
因为你还没有给testlist赋值,所以它是空的并且add方法没有被执行。
add 方法只是简单地将一个条目“添加”到列表中,但如果列表为空,则无法向其中添加任何内容。
你必须以某种方式初始化它,例如List<String>? testlist = [];,但这取决于你最终将如何使用它。
【讨论】: