Оператор return
используется для возврата значения из функции.
Если у вас есть такая функция итератора:
public IEnumerable<int> IteratorOverInt() { }
оператор return в приведенной выше функции должен вернуть заполненный IEnumerable<int>
.
public IEnumerable<int> IteratorOverInt() {
return new List<int> { 1, 2, 3, 4 };
}
но если вы работаете с функцией итератора, вы будете использовать yield return
, поэтому ваш код может выглядеть так:
public IEnumerable<int> IteratorOverInt() {
for (int i = 0; i < 4; i++) {
yield return i;
}
}
Итак, yield return
возвращает int
, в то время как подпись метода требует IEnumerable<int>
Что будет делать оператор return
в приведенном выше случае? Вернуть результаты, превосходящие урожайность? Связать все с урожайностью? return
в приведенном выше случае не имеет особого смысла.
Таким образом, нам нужен способ return
, который имеет смысл в блоке итератора, поэтому есть yield break
.
Конечно, вы можете сделать это с break
, но как бы тогда выйти из тела функции, если у вас есть еще код, который будет выполняться? Обернуть все в сложный блок if-else? Я бы сказал, что было бы лучше иметь yield break
.
person
chakrit
schedule
31.01.2009