Donc je rencontre souvent cette situation ... où Do.Something(...)
renvoie une collection nulle, comme ceci:
int[] returnArray = Do.Something(...);
Ensuite, j'essaie d'utiliser cette collection comme ceci:
foreach (int i in returnArray)
{
// do some more stuff
}
Je suis juste curieux, pourquoi une boucle foreach ne peut-elle pas fonctionner sur une collection nulle? Il me semble logique que 0 itérations soient exécutées avec une collection nulle ... au lieu de cela, elle lance unNullReferenceException
. Quelqu'un sait pourquoi cela pourrait être?
C'est ennuyeux car je travaille avec des API qui ne savent pas exactement ce qu'elles renvoient, donc je me retrouve avec if (someCollection != null)
partout ...
Edit: Merci à tous d'avoir expliqué que les foreach
utilisations GetEnumerator
et s'il n'y a pas d'énumérateur à obtenir, le foreach échouerait. Je suppose que je demande pourquoi le langage / runtime ne peut pas ou ne fera pas de vérification nulle avant de saisir l'énumérateur. Il me semble que le comportement serait encore bien défini.
null
valeur. Suggérez-vous cela uniquement pour les foreach
boucles ou autres instructions?