18

Null 伝播演算子?.についてよく読んで、次のシナリオで役立つかどうかの答えが見つかりませんでした。

スローするコード:

int[] values = null;

foreach ( var i in values ) // Throws since values is null.
{
    // ...
}

これを機能させるには、変数nullにアクセスする前にチェックを追加する必要があります。values

ほとんどの場合、上記のコードは Null 伝播演算子の設計上の考慮事項の範囲外です。それでも、確かに、私は尋ねなければなりません。

私の質問:

ループ内nullのコレクションにアクセスしようとする場合、Null 伝播演算子は役に立ちますか?foreach

4

4 に答える 4

12

別の有効な方法を見つけました:

Jon Skeet (その他) の素晴らしいMoreLinq拡張機能を使用する場合、最初の例で次のようなForEach拡張メソッドを使用できます。

int[] values = null;

values?.ForEach(i=> /*...*/); // Does not throw, even values is null.
于 2015-08-09T18:46:30.830 に答える
8

いいえそうではありません。オブジェクトのメンバーに安全な方法でアクセスできるように設計されています。この場合、配列がnullかどうかを確認する必要があります。

于 2014-12-30T10:27:15.207 に答える