Cuando tengo un bloque de códigopatrón de trabajo de rendimiento rendimiento
static void Main()
{
foreach (int i in YieldDemo.SupplyIntegers())
{
Console.WriteLine("{0} is consumed by foreach iteration", i);
}
}
class YieldDemo
{
public static IEnumerable<int> SupplyIntegers()
{
yield return 1;
yield return 2;
yield return 3;
}
}
¿Puedo interpretar el principio detrás de retorno rendimiento como
- Principal() llama a los SupplyIntegers()
|1| |2| |3| are stored in contiguous memory block.Pointer of "IEnumerator" Moves to |1|
- El control vuelve de SupplyInteger() a Main().
- Principal() imprime el valor
- Puntero Se mueve a | 2 |, y así sucesivamente.
Aclaraciones:
(1) Normalmente tendremos se permite una sentencia de retorno válida dentro de un function.How hace C# trata cuando devuelven varios rendimiento, el rendimiento de retorno, ... declaraciones están presentes ?
(2) Una vez que se encuentra el retorno, no hay forma de que el control regrese de nuevo a SupplyIntegers(), en caso de que esté permitido, ¿no volverá el Rendimiento desde 1? Quiero decir rendimiento rendimiento 1?
Re preguntar sobre un libro: C# en profundidad (Manning, Skeet), capítulo 6. Es el capítulo de muestra libre, y cubre bloques de iteradores. No es exactamente un libro para principiantes de C# (está lejos de serlo), pero tendrá dificultades para encontrar una mejor referencia sobre este tema. –
Si los privilegios permiten preguntar "¿No has escrito ningún libro?" – user193276
No, no lo he hecho. Hago algunas correcciones para un editor, y de vez en cuando escribo un artículo extraño, etc. Pero no hay ningún libro de mi parte. –