国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#基礎之Lambda表達式用法實例教程

2020-01-24 02:26:33
字體:
來源:轉載
供稿:網友

本文以實例形式介紹了C#中Lambda表達式的用法,分享給大家供大家參考之用。具體如下:

從委托的角度來看,Lambda表達式與匿名方法沒有區別。在前面C#基礎之匿名方法一文中,我們使用了匿名方法來調用List<T>的FindAll方法。從C# 3.0開始,在使用匿名方法的地方,完全可以用Lambda表達式來代替。Lambda表達式的定義方式為:“([參數列表]) => 表達式”。運算符“=>”是一種與賦值運算“=”具有相同優先級的右結合運算符,在英語里讀作:“goes to”。

現在回過頭來看我們的例子。下面的代碼與之前C#基礎之匿名方法一文中的代碼具有相同的效果:

class Program {  static void Main(string[] args)  {  List<string> names = new List<string>();  names.Add("Sunny Chen");  names.Add("Kitty Wang");  names.Add("Sunny Crystal");   List<string> found = names.FindAll   (   // Lambda Expression Implementation   name => name.StartsWith(   "sunny",   StringComparison.OrdinalIgnoreCase)   );   if (found != null)  {   foreach (string str in found)   Console.WriteLine(str);  }  } }

上面的Lambda Expression Implementation在效果上與匿名方法沒有任何區別,“=>”左邊的name定義了參數(當參數個數為1的時候,圓括號可以省略),“=>”右邊定義執行體。由于C# 3.0編譯器具有Type Inference的能力,參數類型與返回值都將由編譯器通過上下文判定,因此與匿名方法不同,Lambda表達式的參數可以不給定參數類型。當所表示的匿名方法沒有任何參數時,Lambda表達式也同樣可以使用,只需在“=>”左邊用一對圓括號表示即可。即:

() => Console.WriteLine("Hello!"); 

事實上,“Lambda表達式”這一詞比較籠統,事實上“=>”運算符既可以表示Lambda表達式,也可以表示Lambda語句。Lambda語句由代碼塊組成,形式上很像匿名方法。請看下面的例子:

class Program {  static void Main(string[] args)  {  // Lambda 表達式  Func<int, bool> dele1 = n => n > 10;  // Lambda 語句  Func<int, bool> dele2 = (int n) => { return n > 10; };  Console.WriteLine(dele1(16));  Console.WriteLine(dele1(8));  }}

兩種定義方法同樣可以正確地輸出結果。請注意,當我們希望構建表達式樹的時候,情況卻完全不同了:

// okExpression<Func<int, bool>> expr1 = n => n > 10;// error: cannot converted to an expression treeExpression<Func<int, bool>> expr2 = (int n) => { return n > 10; };

由此可見,在構建表達式樹的時候,不能用Lambda語句(帶有代碼語句的Lambda表達式),而應該使用Lambda表達式。從這里就可以看出匿名方法與Lambda表達式的區別了。

相信本文所述對大家C#程序設計的學習有一定的借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永嘉县| 尚义县| 齐齐哈尔市| 卫辉市| 霍州市| 石台县| 绥中县| 名山县| 多伦县| 雅安市| 石棉县| 滨海县| 卢氏县| 霍州市| 民和| 鄂尔多斯市| 屏边| 曲麻莱县| 桓仁| 镇宁| 景宁| 泽库县| 德州市| 游戏| 霸州市| 林周县| 玉环县| 青铜峡市| 蓝山县| 彭水| 宁晋县| 丰镇市| 乐昌市| 东乡县| 双柏县| 吉水县| 安塞县| 赞皇县| 紫阳县| 台东市| 神池县|