En C #, puede construir métodos con el tipo de retorno IEnumerable<T>y el uso yield returny yield breakpara controlar el flujo. Aquí hay un ejemplo simple que usa ambos controles:
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;
}
}
Mi pregunta es, ¿por qué se diseñó originalmente para usar dos palabras clave yieldy no usarlo de la siguiente manera con el único yield"rendimiento del valor de retorno":
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.
}
}
Para mí, esto es más fácil de leer y entender.
yield x;también un error de sintaxis en ese entonces?