天天看點

C#委托+lambda表達式+泛型 結合文法糖簡單例子詳解

最近學習了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);

        }

繼續閱讀