implementación de statement de rendimiento

Quiero saber todo sobre la statement de yield , en una forma fácil de entender.

He leído sobre la statement de yield y su facilidad al implementar el patrón de iterador. Sin embargo, la mayor parte es muy seca. Me gustaría esconderme y ver cómo Microsoft maneja el rendimiento de retorno.

Además, ¿cuándo usas el límite de rendimiento?

yield trabaja construyendo una máquina de estado internamente. Almacena el estado actual de la rutina cuando sale y se reanuda desde ese estado la próxima vez.

Puede usar Reflector para ver cómo el comstackdor lo implementa.

yield break se usa cuando quiere dejar de devolver resultados. Si no tiene un yield break , el comstackdor asumiría uno al final de la función (al igual que una statement return; en una función normal)

Aquí hay un comienzo, del blog de Raymond Chen:

  • La implementación de iteradores en C # y sus consecuencias (parte 1)
  • La implementación de iteradores en C # y sus consecuencias (parte 2)
  • La implementación de iteradores en C # y sus consecuencias (parte 3)

Como dice Mehrdad, construye una máquina de estado.

Además de utilizar Reflector (otra excelente sugerencia), puede resultarle útil mi artículo sobre la implementación del bloque de iteradores . Sería relativamente simple si no fuera por bloques finally , ¡pero introducen una dimensión extra de complejidad!