У 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;теж тоді не було помилки синтаксису?