2011-11-27 60 views
6

可能重複:
yield statement implementation'yield'關鍵字是一個語法糖嗎?什麼是它執行

我見過msdn docs和它說:

產量關鍵字信號到編譯器的方法它看起來是一個迭代器塊。編譯器生成一個類來實現在迭代器塊中表示的行爲。在迭代器塊中,yield關鍵字與return關鍵字一起用於爲枚舉器對象提供值。

因此,這意味着yield關鍵字是語法糖和編譯器生成的迭代器的重活。 (我是否正確?)

那麼這個語法糖的生成實現代碼是什麼。

+3

99%的編程語言是語法糖。畢竟有了Turning Completeness的概念,並且有一種語言只有一條已經被證明是圖靈完整的指令。在編程語言中,它全部是關於語法的。 – Stilgar

+0

@Stilgar +1哈哈好評:)強硬不知道它的正確性。 –

+0

只爲記錄:句法suger是一件好事™。 – JensG

回答

4

生成的代碼依賴於原始代碼,但通常情況下會生成一個狀態機,用於跟蹤集合的當前狀態。

見Eric Lippert的yield statement implementation,this answer和Jon Skeet的this blog post

+0

thanx ..和+1鏈接到喬恩·斯威特的帖子 –

+1

另請參見雷蒙德關於這個問題的系列文章:http://blogs.msdn.com/b/oldnewthing/archive/2008/08/12/8849519.aspx –

+0

@EricLippert Thanx鏈接到那個優秀的文章:) –

相關問題