C 高階程式設計之Lambda表示式 簡明教程

2021-07-26 23:04:55 字數 2075 閱讀 8816

通過前面對委託的講解之後,應該明白了委託的用處和委託的好處,但是在使用委託的時候必須要知道方法的名字才能使用委託,接下來需要了解的是即使不知道方法名也能使用委託即匿名方法 接下來將用乙個例項來說明匿名方法

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace anonymousdelegate

; console.writeline(str_full("字串0,"));}}

}

程式執行的結果

從**中我們可以看出並沒有將方法傳遞給func而是使用了delegate關鍵字加上乙個字串引數,這裡就是使用了匿名方法

掌握了匿名方法之後就可以使用lambda來改寫這個匿名方法了

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace anonymousdelegate

; "字串0,"));

string str1 = "字串1,";

funcstr_full = str0 =>

;console.writeline(str_full("字串0,"));}}

}

將上面的匿名方法注釋掉我們使用lambda表示式來改寫這個程式,得到的結果和上圖的結果一樣這裡就不重複貼圖了。

首先要明白的就是「=>」運算子改運算子叫做lambda運算子 運算子的左邊列出了需要的引數"=>" 右邊定義了賦予lambda變數的方法的實現**

關於lambda表示式引數的問題,顯然上面的方法只用到了乙個引數當多個引數的時候該怎麼處理

其實很簡單 funcnparm = (1,2,3,...,n-1) =>

比如乙個引數funconeparm = s =>

兩個引數functwoparm = (x,y) =>

三個引數functhreeparm = (x,y,z) =>

下面直接看乙個例項:

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace lambda

; console.writeline("number1+number2+pram的結果是:", res(3));

//當lambda表示式只有一行語句的時候可以省略return語句 其中隱式包含了return

int xy = 5;

funcf = x => xy + x;

console.writeline(f(3));

funcresul = (x, y) => x += y;//兩個引數的lambda表示式

console.writeline("x+y的結果是:", resul(1, 2));

//但是花括號中包含了多條語句的時候就需要return語句了(此時的return語句不可被省略)

funcresu = (x, y) =>//兩個in引數 乙個out結果

;console.writeline("x+y的結果是:", resu(1, 2));}}

}

程式執行的結果如下圖:

例項正在補充中...敬請期待 歡迎拍磚

C 高階程式設計(八) Lambda表示式

lambda 表示式 是乙個匿名函式,它可以包含表示式和語句,並且可用於建立委託或表示式樹型別。所有 lambda 表示式都使用 lambda 運算子 該運算子讀為 goes to 該 lambda 運算子的左邊是輸入引數 如果有 右邊包含表示式或語句塊。lambda表示式的基本形式是 explic...

高階函式 lambda表示式

2.6 map 第乙個引數傳入乙個函式,第二個引數為乙個可迭代物件 li 1 1,3,5,7 def funca x return x x m1 map funca,li 1 print type m1 print m1 2.6 reduce 第乙個引數傳入乙個函式,第二個引數 可以迭代物件 第三個...

Lambda 表示式(C 程式設計指南)

最近在研究arcgis runtime,被下面 中的這個符號搞暈了 總感覺這是乙個函式,去微軟的 查了查,果不其然,這個也算乙個新的東西吧,學習了,感謝群友的幫忙。localserver.initializeasync graphicslayer mymap.layers graphicslayer...