C# 把Lambda表達式用于匿名方法
看一下Lambda表達式。Lambda.表達式是簡化匿名方法的語法的一種方式。實際上,Lambda表達式還有其他用處,但為了簡單起見,只介紹Lambda表達式的這個方面。使用Lambda表達式可以重寫上一節(jié)最后的一段代碼,如下所示:
myTimer.Elapsed += (source,e) => WriteLine ("Event handler called after " + $"{ (source as Timer).Interval} milliseconds.");
這段代碼初看上去有點讓人摸不著頭腦(除非很熟悉所謂的函數(shù)式編程語言,如Lisp或Haskell)。但如果仔細觀察,就會看出或至少推斷出代碼是如何工作的,它與所替代的匿名方法有什么關(guān)系。Lambda表達式由以下3個部分組成:
? 放在括號中的參數(shù)列表(未類型化)
? =>運算符
? C#語句
使用前面“匿名類型”中介紹的邏輯,從上下文中推斷出參數(shù)的類型。=>運算符只是把參數(shù)列表與表達式體分開。在調(diào)用Lambda表達式時,執(zhí)行表達式體。
編譯器會提取這個Lambda表達式,創(chuàng)建一個匿名方法,其工作方式與匿名方法相同。其實,它會被編譯為相同或相似的CIL代碼。
點擊加載更多評論>>