程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Lambda表達式的面紗(一)

Lambda表達式的面紗(一)

編輯:C#入門知識

在.NET3.0版本中微軟推出了Lambda表達式。這使代碼的表述可以更加優雅。但是對於新事物大多會本能的排斥,雖然3.0版本已經推出了好久了,但是我向周圍的人了解了一下,用Lambda的人不是很多,即使有可以使用的場合也用舊方法來代替。其實Lambda表達式並不神秘,下面讓我們一起來揭開C# Lambda的面紗。

  下面這段簡單的程序是包含了一段Lambda表達式,     class Program     {         delegate string MyDelagate(string val1, string val2);           static void Main(string[] args)         {             MyDelagate my = (param1, param2) =>             {                 string test = " 內部變量 ";                 return param1 + param2 + test;             };                            Console.WriteLine(my(" 參數1 ", " 參數2 "));               Console.Read();         }       }   運行結果如下:   當然這個小例子並沒有體現出Lambda的優勢所在,Lambda的好處會在下一章會介紹。我們先去看看Lambda表達式的本質,正所謂透過現象看本質。現在需要一款反編譯的工具 .net reflector (下載網址:http://115.com/lb/5lbd3lgqkupj) 打開該軟件,將編譯的項目文件用reflector 打開   反編譯的結果和我們寫的基本一致,因為我們選擇了4.0,微軟在3.0的時候已經推出的Lambda表達式。讓我們選擇.NET2.0,然後再進行反編譯,看看會變成什麼樣子。     熟悉不? 這不就是我們所熟悉的匿名方法的寫法嗎。   既然Lambda表達式就是匿名方法寫法的升級,那麼在.net平台還不支持匿名方法的時候,會被反編譯成什麼樣子呢。     我們還原一下程序:這是用一個委托,調用了一個方法,方法返回了三個變量拼接的字符串。 這段程序和之前的Lambda表達式實現的功能是一致的。     class Class2     {         private delegate string MyDelagate(string val1, string val2);           static void Main(string[] args)         {               MyDelagate my = new MyDelagate(Method);             Console.WriteLine(my(" 參數1 ", " 參數2 "));             Console.Read();             return;         }           private static string Method(string param1, string param2)         {             string test = " 內部變量 ";             return (param1 + param2 + test);         }       }     通過上述的分析我們已經揭開了Lambda的面紗,同時也揭開了Lambda的發展歷程。 1.在.net1.0的時候,我們在程序中只能通過方法調用來實現功能 2.或者通過定義委托來進行方法調用 3.在.net2.0中支持了匿名委托,所以可以通過編寫匿名方法來實現功能。 4.在.net3.0中推出了Lambda表達式,它讓我們在實現功能的同時,美化了代碼結構。                               

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved