Метод возвращает IEnumerable через оператор возврата урожая.
Если оператор урожая никогда не происходит (это - внутренняя условная логика), метод возвратит пустой указатель, или это возвратит Счетное с количеством 0?
Допустимый IEnumerable, который не производит значений при итерации по нему.
Подумайте об этом: вы можете сохранить генератор IEnumerable в переменной - сам код запускается только тогда, когда вы фактически перебираете результаты. Как бы вы могли выполнить код, если бы у вас было null
? Или как вы узнали , что функция ничего не даст, если ее не запустить.
Действительно, программисты 2.0, склонные к интенсивному использованию перечислений, должны были иметь в своих инструментах стандартную часть:
public static IEnumerable<T> EmptyEnum<T>()
{
yield break;
}
До появления System.Linq.Enumerable.Empty (). Очень полезно во многих случаях, часто именно потому, что он не возвращает null. Например, если GetIntEnum () может возвращать какой-то тип IEnumerable, но также может возвращать null, тогда GetIntEnum () ?? Enumerable.Empty
дает нам то, что всегда безопасно для перечисления (при условии, что это желаемое поведение в случае нулевых результатов).
Последнее - вы сможете GetEnumerator ()
несмотря ни на что, просто не будет никаких элементов для перечисления. Это эквивалентно Enumerable.Empty
.