可能重複:
yield statement implementation'yield'關鍵字是一個語法糖嗎?什麼是它執行
我見過msdn docs和它說:
產量關鍵字信號到編譯器的方法它看起來是一個迭代器塊。編譯器生成一個類來實現在迭代器塊中表示的行爲。在迭代器塊中,yield關鍵字與return關鍵字一起用於爲枚舉器對象提供值。
因此,這意味着yield
關鍵字是語法糖和編譯器生成的迭代器的重活。 (我是否正確?)
那麼這個語法糖的生成實現代碼是什麼。
可能重複:
yield statement implementation'yield'關鍵字是一個語法糖嗎?什麼是它執行
我見過msdn docs和它說:
產量關鍵字信號到編譯器的方法它看起來是一個迭代器塊。編譯器生成一個類來實現在迭代器塊中表示的行爲。在迭代器塊中,yield關鍵字與return關鍵字一起用於爲枚舉器對象提供值。
因此,這意味着yield
關鍵字是語法糖和編譯器生成的迭代器的重活。 (我是否正確?)
那麼這個語法糖的生成實現代碼是什麼。
生成的代碼依賴於原始代碼,但通常情況下會生成一個狀態機,用於跟蹤集合的當前狀態。
見Eric Lippert的yield statement implementation,this answer和Jon Skeet的this blog post。
thanx ..和+1鏈接到喬恩·斯威特的帖子 –
另請參見雷蒙德關於這個問題的系列文章:http://blogs.msdn.com/b/oldnewthing/archive/2008/08/12/8849519.aspx –
@EricLippert Thanx鏈接到那個優秀的文章:) –
99%的編程語言是語法糖。畢竟有了Turning Completeness的概念,並且有一種語言只有一條已經被證明是圖靈完整的指令。在編程語言中,它全部是關於語法的。 – Stilgar
@Stilgar +1哈哈好評:)強硬不知道它的正確性。 –
只爲記錄:句法suger是一件好事™。 – JensG