Lambda表示式介紹

2021-09-09 04:14:49 字數 3790 閱讀 5282

lambda表示式實際上是乙個匿名函式。它包含表示式和語句,常用於建立委託或表示式目錄樹型別。所有lambda表示式都是用lambda運算子----------  =>,該運算子讀為「goesto」。lambda運算子的左邊是輸入引數(可能沒有),右邊是表示式或語句塊。lambda表示式返回右邊表示式的結果。其基本格式如下:

(input paramenters)=>expression

其中,parameters是乙個引數列表,在lambda只有乙個輸入引數時可以不適用括號,否則括號是必須的。兩個或更多輸入引數由括在括號中的逗號分隔,如以下**所示,包括兩個引數x和y。

(x,y)=> x==y

通常lambda表示式的引數都是可變型別的,由編譯器自動確定它的具體型別。但有時編譯器難於或無法推斷輸入型別,就需要為引數顯示指定型別,既在引數之前新增引數型別。如下所示的lambda表示式包括連個引數x和s。其中x是int型別,而s則是string型別。

(int x, string s) =>s.length > x

當lanbda表示式沒有引數時,需要使用空的括號表示,如下所示。其中,「()」表示沒有引數,而amethod()是乙個具體的方法,該方法的返回值就是lambda表示式的結果。

() => amethod()

由於lambda表示式實際是匿名函式,它可以賦值到乙個委託,而在ienumerable的方法中很多都通過函式委託來實現自定義的運算、條件等操作,所以lambda表示式在linq中被廣泛使用。

常用例項:

1.用where()方法進行篩選

using system; using system.linq;

//查詢所有值大於3被索引的元素             var query2 = intary.where((num,  index) => num > index * 3);              console.writeline("query2:");             foreach (var item in  query2)             ",  item);             }         }     } }

2.用orderby()方法進行排序

using system; using system.linq;

//對所有元素按照%10進行降序排列             var query2 =  intary.orderbydescending(val => val % 10);              console.writeline("query2:");             foreach (var item in  query2)             ",  item);             }         }     } }

以上的兩個排序demo都是採用預設的int排序比較器,在一些開發中,以下兩種情況需要使用特定的資料比較器:

3.用skip()、skipwhile()跳過元素

using system; using system.linq; using system.collections.generic;

//跳過intary中小於5的元素             var query2 =  intary.skipwhile(num => num < 5);              console.writeline("query2");             foreach (var item in  query2)             ",  item);             }         }     } }

4.用take()、takewhile()提取元素

using system; using system.linq; using system.collections.generic;

//取intary中小於5的元素             var query2 = intary.takewhile(num  => num < 5);             console.writeline("query2");              foreach (var item in query2)             ", item);             }         }      } }

5.對元素進行數值計算

6.用distinct()消除集合中相等的元素

using system; using system.linq;

7.用concat()連線兩個集合

注意:concat()方法是直接將兩個集合中的元素連線在一起,不會進行重新排序、過濾等,就算兩個集合中元素有重複也同樣保留。

8.集合操作

說到集合,很容易想起並集、交集、差集3種常用操作。在linq中,ienumerable類分別通過union()、intersect()、except完成這3種操作()。

using system; using system.linq;

var query2 = intary1.intersect(intary2);              console.writeline("交集");             foreach (var item in  query2)            

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

lambda表示式簡單介紹

參考 捕獲外部變數列表 函式引數列表 mutable 或 exception 宣告 返回值型別 各項含義 capture list 捕獲外部變數列表 params list 形參列表 mutable指示符 用來說用是否可以修改捕獲的變數 exception 異常設定 return type 返回型別...

Lambda表示式的簡單介紹

沒有使用lambda的 button.addactionlistener new actionlistener 使用lambda button.addactionlistener actionevent 讓我們來看乙個更明顯的例子 不採用lambda的老方法 runnable runnable1 n...