標籤:
基礎,你是高手,就請飄走。。。。。。。
平時做項目寫代碼很少用lambda運算式,特此補充一下,記錄下來。
1 什麼是lambda運算式?
msdn說法:使用 lambda 運算式,可以寫入可作為參數傳遞或作為函數調用值返回的本地函數
乍一看,真的有點不舒服,語文沒學好!!!那是機器翻譯的,吼吼。。。。。。。。。。。。。
舉個例子唄
lambda運算式 x=>x*x 輸入x,輸出x*x
如果有這樣一個方法:
1 public int getX2(int x){return x*x;}
注意了,是有差別的,運算式怎麼可能跟方法一樣呢?
C#中有把方法當做參數進行傳遞!是的,那就是委託。例如:
1 delegate int del(int i); 2 static void Main(string[] args)3 {4 del myDelegate = x => x * x;5 int j = myDelegate(5); //j = 256 }
2 lambda 類型
運算式 lambda
運算式位於 => 運算子右側的 lambda 運算式稱為“運算式 lambda”。 運算式 lambda 會返回運算式的結果,並採用以下基本形式:
(input parameters) => expression
看例子:
static void Main(string[] args) { int x = 5, y = 6; Func<int, int, int> f = ((x1, y1) => x1 + y1); Console.WriteLine(f(x,y).ToString() ); Console.Read(); }
結果多少? 11
Func是一種泛型委派,一般都帶有傳回值。
語句 lambda
語句 lambda 與運算式 lambda 運算式類似,只是語句括在大括弧中:
1 (input parameters) => {statement;}
如:
1 static void Main(string[] args)2 {3 Action<string> f = (x) => { Console.WriteLine(x); };4 f("hello,world");5 Console.Read();6 }
其中:Action是.NET內部提供的一個無傳回值、泛型的委託。
結構如下:
1 delegate void Action();2 delegate void Action<in T>(T obj);3 delegate void Action<in T,in T1>(T obj,T1 obj1);4 delegate void Action<in T,in T1,in T2>(T obj,T1 obj1,T2 obj2);
.......
就寫到這裡吧。
C#lambda運算式記錄點滴