在.NET3.0版本中微軟推出了Lambda表達式。這使代碼的表述可以更加優雅。但是對于新事物大多會本能的排斥,雖然3.0版本已經推出了好久了,但是我向周圍的人了解了一下,用Lambda的人不是很多,即使有可以使用的場合也用舊方法來代替。其實Lambda表達式并不神秘,下面讓我們一起來揭開C# Lambda的面紗。
下面這段簡單的程序是包含了一段Lambda表達式, class
當然這個小例子并沒有體現出Lambda的優勢所在,Lambda的好處會在下一章會介紹。我們先去看看Lambda表達式的本質,正所謂透過現象看本質。現在需要一款反編譯的工具.net reflector (下載網址:http://115.com/lb/5lbd3lgqkupj)打開該軟件,將編譯的項目文件用reflector 打開
反編譯的結果和我們寫的基本一致,因為我們選擇了4.0,微軟在3.0的時候已經推出的Lambda表達式。讓我們選擇.NET2.0,然后再進行反編譯,看看會變成什么樣子。


熟悉不? 這不就是我們所熟悉的匿名方法的寫法嗎。既然Lambda表達式就是匿名方法寫法的升級,那么在.net平臺還不支持匿名方法的時候,會被反編譯成什么樣子呢。


我們還原一下程序:這是用一個委托,調用了一個方法,方法返回了三個變量拼接的字符串。 這段程序和之前的Lambda表達式實現的功能是一致的。 classClass2{privatedelegatestringMyDelagate(stringval1,stringval2);staticvoidMain(string[]args){MyDelagatemy=newMyDelagate(Method);Console.WriteLine(my("參數1","參數2"));Console.Read();return;}privatestaticstringMethod(stringparam1,stringparam2){stringtest="內部變量";return(param1+param2+test);}}通過上述的分析我們已經揭開了Lambda的面紗,同時也揭開了Lambda的發展歷程。1.在.net1.0的時候,我們在程序中只能通過方法調用來實現功能2.或者通過定義委托來進行方法調用3.在.net2.0中支持了匿名委托,所以可以通過編寫匿名方法來實現功能。4.在.net3.0中推出了Lambda表達式,它讓我們在實現功能的同時,美化了代碼結構。




新聞熱點
疑難解答