最近学习了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);
}