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