Daher stoße ich häufig auf diese Situation ... in Do.Something(...)der eine Nullsammlung zurückgegeben wird, wie folgt:
int[] returnArray = Do.Something(...);
Dann versuche ich, diese Sammlung so zu verwenden:
foreach (int i in returnArray)
{
// do some more stuff
}
Ich bin nur neugierig, warum kann eine foreach-Schleife nicht mit einer Nullsammlung arbeiten? Es scheint mir logisch, dass 0 Iterationen mit einer Nullsammlung ausgeführt werden ... stattdessen wird a ausgelöst NullReferenceException. Weiß jemand warum das sein könnte?
Das ist ärgerlich, da ich mit APIs arbeite, bei denen nicht klar ist, was sie zurückgeben, sodass ich if (someCollection != null)überall ...
Bearbeiten: Vielen Dank an alle für die Erklärung dieser foreachVerwendung GetEnumeratorund wenn es keinen Enumerator gibt, der abgerufen werden kann, würde der foreach fehlschlagen. Ich frage mich wohl, warum die Sprache / Laufzeit keine Nullprüfung durchführen kann oder will, bevor ich den Enumerator greife. Es scheint mir, dass das Verhalten immer noch gut definiert wäre.
nullWert angegeben wird. Schlagen Sie dies auch nur für foreachSchleifen oder andere Anweisungen vor?