感謝Eric大大給一個好理解的範例:
原本常見寫一個方法像這樣:
Bool A ( int a,int b)
{
return a==b;
}
而Lambda的概念是,把上面 改成 輸入 => 黑箱=>輸出
也就是:
A= (a,b)=>(a==b)
(參數)=>{運算式}
把左邊的(參數) 丟到 右邊的{運算式}去做運算
這邊有二點重點:
1.A是什麼並不重要,也就是"匿名方法"的概念
2.把原本需要四行寫成的A方法,精簡改成一行:
輸入【int a,int b 】 => 輸出【a==b】
當然,Lambda 的主體可以包含任意數目的陳述式,但是實際上通常不會超過兩個或三個陳述式,像這樣的例子:
Action<string> greet = name =>
{
string greeting = $”Hello {name}!”;
Console.WriteLine(greeting);
};greet(“World”);// Output: Hello World!
還有在委派中,可以這樣用:
Func<int, bool> equalsFive = x => x == 5;
bool result = equalsFive(4);Console.WriteLine(result); // False
委派可以具現化為 Func<int, bool>
執行個體,其中 int
是輸入參數,而 bool
是傳回值。 傳回值一律在最後一個類型參數中指定。 例如,Func<int, string, bool>
定義具有兩個輸入參數 (int
和 string
) 的委派與 bool
的傳回類型。
委派,用一句話解釋,就是方法中包一個方法,舉例像是:
B(A()),就像數學裡,函數中包一個函數f(g(x)),
這就是我覺得對委派最簡單易懂的形容,
白話就像在說,我把部分事情委託派給其他函數幫我做,
以前只知道函數內傳入的參數就是int、String...等等,
但其實,傳入的參數也可以是一個函數,一個方法!!
另外,在判斷矩陣時,Lambda可以減少很多迴圈的使用,例如:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var firstNumbersLessThanSix = numbers.TakeWhile(n => n < 6); Console.WriteLine(string.Join(“ “, firstNumbersLessThanSix)); // Output:
// 5 4 1 3
其他詳細範例可以看下面相關網路文章:
https://jeffprogrammer.wordpress.com/2016/01/02/%E8%A7%80%E5%BF%B5-lambda-expression-func/
看完文章覺得對你有幫助,記得幫我鼓掌1下 👏 ,各位大大的鼓勵,對我是很大的創作動力,感謝*1000!