在我們程式中,經常有這樣一些需求:
1. 需要乙個臨時方法,這個方法只會使用一次,或者使用的很少。
2. 這個方法的方法體很短,以至於比方法宣告都短,寫起來實在沒勁(我將其稱之為「一句話方法」)。
匿名委託
匿名方法使我們不需要建立具體的委託方法我們可以直接用匿名來定義委託方法
例如:
action < string> p = delegate(string s)//定義乙個委託使用匿名方法(匿名委託)
; p(「sss」); //例項化匿名方法
lambada表示式
lambda 運算子 => 左側指定輸入引數(如果有),然後在另一側輸入表示式或語句塊。
格式:(input parameters) => expression
僅當 lambda 只有乙個輸入引數時,括號才是可選的;否則括號是必需的。 括號內的兩個或更多輸入引數使用逗號加以分隔:
(x, y) => x == y
有時,編譯器難以或無法推斷輸入型別。 如果出現這種情況,你可以按以下示例中所示方式顯式指定型別:
(int x, string s) => s.length > x
使用空括號指定零個輸入引數:
() => somemethod()
語句 lambda
語句 lambda 與表示式 lambda 表示式類似,只是語句括在大括號中:
(input parameters) =>
語句 lambda 的主體可以包含任意數量的語句;但是,實際上通常不會多於兩個或三個。
delegate void testdelegate(string s);
… testdelegate mydel = n => ;
mydel(「hello」);
像匿名方法一樣,語句 lambda 也不能用於建立表示式目錄樹。
Lambada表示式的作用
假設你設計了乙個位址簿的類。現在你要提供函式查詢這個位址簿,可能根據姓名查詢,可能根據位址查詢,還有可能兩者結合。要是你為這些情況都寫個函式,那麼你一定就跪了。所以你應該提供乙個介面,能方便地讓使用者自定義自己的查詢方式。在這裡可以使用lambda函式來實現這個功能。cpp view plain c...
c 學習筆記十八 lambada表示式
c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。語法形式 函式物件引數 捕獲 操作符過載函式引數 mutable 或 exception 宣告 返回值型別1.函式物件引數 捕獲 內容含義 空沒有任何函式物件引數。函式體內可以使用 lambda 所在範圍內所有可見...
c Lambda表示式簡介
c 11標準的lambda引入的主要目的是 能夠將類似於函式的表示式用作接受函式指標或函式符的函式引數,因此,典型的lambda表示式是測試表示式或者比較表示式,可編寫為一條語句,這使得lambda簡潔而易於理解。1 乙個lambda表示式有如下型別 capture list parameter l...