Quindi mi imbatto spesso in questa situazione ... dove Do.Something(...)
restituisce una raccolta nulla, in questo modo:
int[] returnArray = Do.Something(...);
Quindi, provo a usare questa raccolta in questo modo:
foreach (int i in returnArray)
{
// do some more stuff
}
Sono solo curioso, perché un ciclo foreach non può operare su una collezione null? Mi sembra logico che 0 iterazioni vengano eseguite con una collezione null ... invece genera a NullReferenceException
. Qualcuno sa perché questo potrebbe essere?
Questo è fastidioso poiché sto lavorando con API che non sono chiare su esattamente cosa restituiscono, quindi finisco if (someCollection != null)
ovunque ...
Modifica: grazie a tutti per aver spiegato che foreach
usa GetEnumerator
e se non c'è un enumeratore da ottenere, la foreach fallirebbe. Immagino che sto chiedendo perché la lingua / runtime non possano o non facciano un controllo nullo prima di afferrare l'enumeratore. Mi sembra che il comportamento sarebbe ancora ben definito.
null
valore. Lo stai suggerendo anche solo per foreach
loop o altre dichiarazioni?