В C # вы можете создавать методы с возвращаемым типом IEnumerable<T>
и использовать yield return
и yield break
для управления потоком. Вот простой пример, который использует оба элемента управления:
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
yield break;
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield return i;
}
}
Мой вопрос заключается в том, почему он изначально был разработан, чтобы использовать два ключевых слова, yield
а не использовать их, как показано ниже, с одним yield
«возвращаемым значением»:
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
return; // stop completely and return nothing
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield i; // yield the current value.
}
}
Для меня это проще читать и понимать.
yield x;
также синтаксической ошибкой тогда?