foreach ループで繰り返し処理しようとしているオブジェクトが null の場合、例外をスローする理由は何ですか?
たとえば、次のコードは例外をスローします。
public void Test()
{
IEnumerable<int> numbers = null;
foreach (var number in numbers)
{
//Do stuff
}
}
これで、修正は簡単になりました。foreach ループの前に null をチェックするだけです。
public void Test()
{
IEnumerable<int> numbers = null;
if (numbers != null)
{
foreach (var number in numbers)
{
//Do stuff
}
}
}
私の考えでは、foreach ループでできることはすべて、通常の for ループだけでできるため、foreach ループは基本的に存在します。なぜなら、書くのがより便利で読みやすいからです。重要な部分は、書きやすいということです。何かが便利になるように作成されている場合は、最後まで行ってみませんか。この場合、null チェックを暗黙的に行います。コレクションがnullの場合に実際に例外をスローしたい場合があるかもしれませんが、それらははるかに少数派であり、明示的でnullをチェックする必要がある場合であるべきだと思います. 次のようなもの:
public static void Test()
{
IEnumerable<int> numbers = null;
if (numbers == null)
throw new NullReferenceException();
foreach (var number in numbers)
{
//Do stuff
}
}