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の場合でも、エラーをスローするのではなく出力する?ため、安全に使用できます。listnulllist?[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 許容にダウンキャストしているため、ランタイム エラーがスローされます。listnull
print(list![0]); // Not safe. May cause runtime error if list is null
これは、
print((list as List)[0]);