Если возврат урожая никогда не происходит, пустой указатель возвращается?

Метод возвращает IEnumerable через оператор возврата урожая.

Если оператор урожая никогда не происходит (это - внутренняя условная логика), метод возвратит пустой указатель, или это возвратит Счетное с количеством 0?

13
задан lance 6 August 2010 в 19:37
поделиться

3 ответа

Допустимый IEnumerable, который не производит значений при итерации по нему.

Подумайте об этом: вы можете сохранить генератор IEnumerable в переменной - сам код запускается только тогда, когда вы фактически перебираете результаты. Как бы вы могли выполнить код, если бы у вас было null ? Или как вы узнали , что функция ничего не даст, если ее не запустить.

17
ответ дан 1 December 2019 в 21:10
поделиться

Действительно, программисты 2.0, склонные к интенсивному использованию перечислений, должны были иметь в своих инструментах стандартную часть:

public static IEnumerable<T> EmptyEnum<T>()
{
    yield break;
}

До появления System.Linq.Enumerable.Empty (). Очень полезно во многих случаях, часто именно потому, что он не возвращает null. Например, если GetIntEnum () может возвращать какой-то тип IEnumerable, но также может возвращать null, тогда GetIntEnum () ?? Enumerable.Empty () дает нам то, что всегда безопасно для перечисления (при условии, что это желаемое поведение в случае нулевых результатов).

2
ответ дан 1 December 2019 в 21:10
поделиться

Последнее - вы сможете GetEnumerator () несмотря ни на что, просто не будет никаких элементов для перечисления. Это эквивалентно Enumerable.Empty .

8
ответ дан 1 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: