Jadi saya sering mengalami situasi ini ... di mana Do.Something(...)mengembalikan koleksi nol, seperti:
int[] returnArray = Do.Something(...);
Lalu, saya mencoba menggunakan koleksi ini seperti ini:
foreach (int i in returnArray)
{
// do some more stuff
}
Saya hanya ingin tahu, mengapa loop foreach tidak dapat beroperasi pada koleksi nol? Tampaknya logis bagi saya bahwa 0 iterasi akan dieksekusi dengan koleksi nol ... alih-alih melempar a NullReferenceException. Adakah yang tahu mengapa ini bisa terjadi?
Ini menjengkelkan karena saya bekerja dengan API yang tidak jelas persis apa yang mereka kembalikan, jadi saya berakhir di if (someCollection != null)mana - mana ...
Sunting: Terima kasih semua karena menjelaskan foreachkegunaan itu GetEnumeratordan jika tidak ada enumerator yang mendapatkan, foreach akan gagal. Saya kira saya bertanya mengapa bahasa / runtime tidak bisa atau tidak akan melakukan pemeriksaan nol sebelum meraih enumerator. Tampak bagi saya bahwa perilaku itu masih akan didefinisikan dengan baik.
nullnilai. Apakah Anda menyarankan ini hanya untuk foreachperulangan atau pernyataan lain juga?