1. 程式人生 > 其它 >C#|lambda 表示式精簡過程

C#|lambda 表示式精簡過程

強大的Lambda表示式,簡潔到你懵逼。我們知道沒有Lambda表示式之前是delegate匿名錶達式。

注意看下下面程式碼的註釋,明瞭一下整個省略過程。這裡還有之前的一篇筆記https://www.cnblogs.com/huvjie/p/15321191.html。可以結合起來一起看一下。

using System;

namespace ConsoleApp1
{
    class Program
    {
        delegate double Mydel(int par); // 委託

        static void Main(string[] args)
        {
            Mydel del = delegate (int x) { return x + 1; }; // 最初的匿名方法形式

            // 1。lambad 表示式必須在引數數量,型別,位置上與委託相匹配
            Mydel le1 =       (int x) => { return x + 1; }; // 完整Lambda 表示式

            // 2。表示式不一定需要包含型別(隱式型別),出了 ref 和 out 引數
            Mydel le2 =           (x) => { return x + 1; }; // 省略型別

            // 3。如果只有一個引數,並且是隱式型別,周圍的圓括號都可省略;如果沒有引數則必須要有圓括號
            Mydel le3 =             x => { return x + 1; }; // 省略圓括號

            // 4。 如果語句塊包含一個返回語句,可以將語句塊替換成 return 後面的表示式
            //     看起來像省略了 return 和 後面的{}對和分號
            Mydel le4 = x =>  x + 1;   // 最簡,看起來像 le4 = x + 1;


            Console.WriteLine("{0}", del(100));
            Console.WriteLine("{0}", le1(100));
            Console.WriteLine("{0}", le2(100));
            Console.WriteLine("{0}", le3(100));
            Console.WriteLine("{0}", le4(100));

            Console.Read();
        }
    }
}

輸出:

101
101
101
101
101



參考:
1.《圖解教程》P253