¿Cuáles son las ventajas/desventajas de ambos enfoques?yield return versus return select
return items.Select(item => DoSomething(item));
frente
foreach(var item in items)
{
yield return DoSomething(item);
}
EDITAR Como son MSIL más o menos equivalente, que se encuentra más legible?
Su segundo fragmento de código es la * implementación * de Seleccionar. (Suponiendo que esto es LINQ to Objects.) Eso es todo Select: ejecuta un bucle foreach, ejecuta el delegado en cada elemento y arroja los resultados. –
sí. Pero todavía hay diferencias al escribir el primero y el segundo. Primera diferencia: número de LOC, segunda diferencia: legibilidad, tercera diferencia: cuando el retorno de rendimiento está presente en un método, se aplican algunas restricciones (es decir: no puede poner la selección de retorno después del rendimiento en el mismo método). –