Dart のコレクションで使用される場合?
との違いは何ですか?!
言う、私は持っている:
var list = [1, 2];
今、私はどちらかを使用することができます
print(list?[0]); // prints 1
また
print(list![0]); // also prints 1
どちらも同じように見えますが、違いは何ですか?
Dart のコレクションで使用される場合?
との違いは何ですか?!
言う、私は持っている:
var list = [1, 2];
今、私はどちらかを使用することができます
print(list?[0]); // prints 1
また
print(list![0]); // also prints 1
どちらも同じように見えますが、違いは何ですか?
list
あなたのタイプは(nullList<int>
不可)であり、 (null可能)ではないため、どちらも同じ仕事をしているようですList<int>?
。リストが次のような null 許容型だった場合:
List<int>? list;
違いがわかります。
使用?
(null 認識演算子)
isの場合でも、エラーをスローするのではなく出力する?
ため、安全に使用できます。list
null
list?[0]
null
print(list?[0]); // Safe
または??
、デフォルト値を提供するために使用することもできます。
print(list?[0] ?? -1); // Safe. Providing -1 as default value in case the list is null
使用!
(Bang オペレーター)
ただし、そうではない!
ことを明示的に言っており、null 許容から非 null 許容にダウンキャストしているため、ランタイム エラーがスローされます。list
null
print(list![0]); // Not safe. May cause runtime error if list is null
これは、
print((list as List)[0]);