Может ли ienumerable от уступки быть нулевым?

Может ли ienumerable, полученный из выражения yield, когда-либо быть нулевым?


person Guillermo Gutiérrez    schedule 06.07.2013    source источник
comment
проверьте этот stackoverflow.com/questions/1765400/yield-return-with- null   -  person Mahmoud Darwish    schedule 06.07.2013
comment
это может быть полезно ... codeproject.com/Articles/237034 / Yield-Return-Could-Be-Better   -  person terrybozzio    schedule 06.07.2013


Ответы (1)


Нет. Компилятор C # преобразует ваш блок итератора в итератора, который возвращается из вашего метода. Это никогда не может быть null.

Тем не менее, конечно, можно получить null значений в вашем перечислении, при условии, что общий тип вашего перечисления является ссылочным типом или типом, допускающим значение NULL.

person Douglas    schedule 06.07.2013
comment
Что вы имеете в виду под своим блоком итератора? Вы можете вернуть нулевые значения, И вы можете сделать GetEnumerator() return null, поэтому я не уверен, что вы говорите, не может быть нулевым. - person Matthew Watson; 06.07.2013
comment
@MatthewWatson: тело метода, содержащее оператор yield return или yield break, в спецификации C # называется блоком итератора. - person Eric Lippert; 06.07.2013
comment
А, ладно, теперь я понимаю, что он имеет в виду. Все еще не уверен, что OP имел в виду именно это ... возможно, так оно и было. - person Matthew Watson; 06.07.2013