Тому я часто стикаюся з цією ситуацією ... де 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і якщо немає нумератора, передбачення не вдасться. Я думаю, я запитую, чому мова / час виконання не може чи не зробить нульову перевірку перед тим, як схопити перелік. Мені здається, що поведінку все-таки було б чітко визначено.
nullзначення. Чи пропонуєте ви це лише для foreachциклів чи інших тверджень?