Je me retrouve donc fréquemment dans cette situation... où Do.Something(...)
renvoie une collection nulle, comme ceci :
int[] returnArray = Do.Something(...);
Ensuite, j'essaie d'utiliser cette collection comme suit :
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 qu'aucune itération ne soit exécutée avec une collection nulle... au lieu de cela, la boucle lève un NullReferenceException
. Quelqu'un sait-il pourquoi cela pourrait être le cas ?
C'est ennuyeux car je travaille avec des API qui ne sont pas claires sur ce qu'elles retournent exactement, donc je me retrouve avec if (someCollection != null)
partout...
Edit : Merci à tous d'avoir expliqué cela foreach
utilise GetEnumerator
et s'il n'y a pas d'énumérateur à récupérer, le foreach échouerait. Je suppose que je me demande pourquoi le langage/exécution ne peut pas ou ne veut pas faire une vérification de nullité avant de récupérer l'énumérateur. Il me semble que le comportement serait toujours bien défini.