Поэтому я часто сталкиваюсь с такой ситуацией ... где Do.Something(...)возвращается нулевая коллекция, например:
int[] returnArray = Do.Something(...);
Затем я пытаюсь использовать эту коллекцию так:
foreach (int i in returnArray)
{
// do some more stuff
}
Мне просто любопытно, почему цикл foreach не может работать с нулевой коллекцией? Мне кажется логичным, что 0 итераций будут выполняться с нулевой коллекцией ... вместо этого он выдает a NullReferenceException. Кто-нибудь знает, почему это может быть?
Это раздражает, так как я работаю с API, которые не совсем ясно, что именно они возвращают, поэтому я получаю if (someCollection != null)повсюду ...
Изменить: Спасибо всем за объяснение, что foreachиспользует, GetEnumeratorи если нет перечислителя, чтобы получить, foreach потерпит неудачу. Я предполагаю, что спрашиваю, почему язык / среда выполнения не могут или не будут выполнять нулевую проверку перед захватом перечислителя. Мне кажется, что поведение все еще будет четко определено.
nullзначения. Вы предлагаете это только для foreachциклов или других утверждений?