最近學習了lambda表達式,遇到一些比較難看懂的文法。
這裡用很簡單的例子幫大家了解lambda有關的文法糖。
先來看一下普通的内聯lambda表達式
//lambda/inline
Func<int, int, int> func = new Func<int, int, int>((int a, int b) => { return a + b; });
int res = func(100, 200);
Console.WriteLine(res);
第二種省略版:
func = new Func<int, int, int>((x, y) => { return x * y; });
因為new的時候已經 确定了兩個參數和傳回值的類型,是以可以直接使用(x, y)省去了int。
第三種超精版:
//不用建立委托執行個體,第一個使用接上面已經new過的func
func = (a, b) => { return a / b; };
Func<int, int, int> func =>{return a+b;};
//↑↑↑↑↑↑↑↑↑這樣也是可以的
四.lambda和泛型結合:
上面的是第一種不省略的
下面是用文法糖省略寫法
DoSomeCalc<int>((int a, int b) => { return a * b; }, 100, 200);
DoSomeCalc((a, b) => { return a * b; }, 100, 200);//泛型委托
因為100,200已經确定了是以T也就确定了,是以int都可省略了
下面加上這個函數(泛型委托并将表達式穿進去)
static void DoSomeCalc<T>(Func<T,T,T> func ,T x,T y)
{
T res = func(x, y);
Console.WriteLine(res);
}