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