C#委托+lambda表达式+泛型 结合语法糖简单例子详解

时间:2021-10-10 19:25:24

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