gpt4 book ai didi

dart - 之间有什么区别?和!在收藏中?

转载 作者:行者123 更新时间:2023-12-03 04:39:57 25 4
gpt4 key购买 nike

在Dart中的集合中使用?!有什么区别?

说,我有:

var list = [1, 2];
现在,我可以使用
print(list?[0]); // prints 1
要么
print(list![0]); // also prints 1
他们两个似乎都做同样的工作,所以有什么区别?

最佳答案

因为您的list的类型为List<int>(不可为空),而不是List<int>?(可为null),所以它们似乎都完成了相同的工作。如果您的列表属于可空类型,例如:

List<int>? list;
您会看到差异。

使用?(可识别空值的运算符)
使用 ?是安全的,因为如果 listnull,则 list?[0]仍会打印 null而不是抛出错误。
print(list?[0]); // Safe
或者您也可以使用 ??提供默认值。
print(list?[0] ?? -1); // Safe. Providing -1 as default value in case the list is null 

使用!(Bang运算符)
但是, !会引发运行时错误,因为您明确地说自己的 list不是 null,并且将其从可空变为不可空:
print(list![0]); // Not safe. May cause runtime error if list is null
这相当于
print((list as List)[0]); 

关于dart - 之间有什么区别?和!在收藏中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63421955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com