2011-11-27 4 views
6

Duplicar posibles:
yield statement implementation¿La palabra clave 'rendimiento' es un azúcar sintáctico? ¿Cuál es su implementación

que he visto msdn docs y dice:

señales de palabras clave el rendimiento al compilador que el método de que parece es un bloque iterador. El compilador genera una clase para implementar el comportamiento que se expresa en el bloque iterador. En el bloque iterador, la palabra clave yield se utiliza junto con la palabra clave return para proporcionar un valor al objeto enumerador.

por lo que significa yield palabra clave es un azúcar sintáctico y el compilador hace el trabajo pesado de la generación del iterador. (¿Estoy en lo correcto?)

¿Cuál es el código de implementación generado para este azúcar sintáctico?

+3

El 99% de un lenguaje de programación es azúcar sintáctica. Después de todo, existe el concepto de Turning Completeness y hay un lenguaje con una única instrucción que ha demostrado ser Turing completa. En un lenguaje de programación, todo se trata de la sintaxis. – Stilgar

+0

@Stilgar +1 ja, ja, buen comentario :) difícil no estoy seguro de su corrección. –

+0

Solo para los registros: El suger sintáctico es un Good Thing ™. – JensG

Respuesta

4

El código generado depende de la original, pero en general una máquina de estado se genera que realiza un seguimiento del estado actual de la colección.

Ver yield statement implementation, this answer por Eric Lippert y this blog post por Jon Skeet.

+0

thanx .. y +1 para ese enlace a la publicación de Jon skeet –

+1

Vea también la serie de artículos de Raymond sobre el tema: http://blogs.msdn.com/b/oldnewthing/archive/2008/08/12/8849519.aspx –

+0

@EricLippert Thanx para el enlace a ese excelente artículo :) –

Cuestiones relacionadas