2011-11-27 13 views
6

Eventuali duplicati:
yield statement implementationLa parola chiave 'yield' è uno zucchero sintattico? Qual è la sua implementazione

ho visto msdn docs e dice:

segnali di parole chiave il rendimento al compilatore che il metodo in che appare è un blocco iteratore. Il compilatore genera una classe per implementare il comportamento che è espresso nel blocco iteratore. Nel blocco iteratore, la parola chiave yield viene utilizzata insieme alla parola chiave return per fornire un valore all'oggetto enumeratore.

Quindi significa yield parola chiave è uno zucchero sintattico e compilatore fa il lavoro pesante di generare l'Iterator. (Sono corretto?)

Quindi qual è il codice di implementazione generato per questo zucchero sintattico.

+3

Il 99% di un linguaggio di programmazione è zucchero sintattico. Dopo tutto, c'è il concetto di Completare la svolta e c'è una lingua con una singola istruzione che è stata dimostrata essere completa da Turing. In un linguaggio di programmazione è tutto basato sulla sintassi. – Stilgar

+0

@Stilgar +1 ha ha bel commento :) non sono sicuro della sua correttezza. –

+0

Solo per i record: Suger sintattico è una buona cosa ™. – JensG

risposta

4

Il codice generato dipende dall'originale, ma in generale viene generata una macchina a stati che tiene traccia dello stato corrente della raccolta.

Vedi yield statement implementation, this answer di Eric Lippert e this blog post di Jon Skeet.

+0

thanx .. e +1 per il collegamento al post di Jon skeet –

+1

Vedere anche la serie di articoli di Raymond sull'argomento: http://blogs.msdn.com/b/oldnewthing/archive/2008/08/12/8849519.aspx –

+0

@EricLippert Grazie per il link a quell'eccellente articolo :) –

Problemi correlati