C#--Lambda 表達式的使用


lambda:“Lambda 表達式”是一個匿名函數,它可以包含表達式和語句,並且可用於創建委託或表達式目錄樹類型


       所有 Lambda 表達式都使用 Lambda 運算符 =>,該運算符讀爲“goes to”。該 Lambda 運算符的左邊是輸入參數(如果有),右邊包含表達式或語句塊。Lambda 表達式 x => x * x 讀作“x goes to x times x”。可以將此表達式分配給委託類型。

namespace 測試
{
    delegate int MyLambda(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int  
    class Test1
    {
        static void Main(string[] args)
        {
           GotoMyLambda();
        }
        public static void GotoMyLambda()
        {
            MyLambda myDelegate = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
            int j = myDelegate(5); //j用於接受上面聲明delegate定義,返回類型的值。
            Console.WriteLine(j);
            Console.ReadKey();
        }
    }
}
/**
 *官方說明:在前面的示例中,請注意委託簽名具有一個 int 類型的隱式類型輸入參數,
 *並返回 int。可以將 Lambda 表達式轉換爲該類型的委託,因爲該表達式也具有一個輸入參數 (x),
 *以及一個編譯器可隱式轉換爲 int 類型的返回值。(以下幾節中將對類型推理進行詳細討論。)
 *使用輸入參數 5 調用委託時,它將返回結果 25。
 ***/

輸出結果爲:
25

namespace 測試
{
    delegate int MyLambda1(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int  
    delegate void MyLambda2(string i);//不存在返回值
    class Test1
    {
        static void Main(string[] args)
        {
           GotoMyLambda();
        }
        public static void GotoMyLambda()
        {
            MyLambda1 myDelegate1 = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
            int j = myDelegate1(5); //j用於接受上面聲明delegate定義,返回類型的值。
            Console.WriteLine(j);

            MyLambda2 myDelegate2 = x => Console.WriteLine(x);
            myDelegate2("你好,中國人!");//不存在返回值情況,如果強制返回會編譯不通過
            Console.ReadKey();
        }
    }
}

輸出結果爲:
25
你好,中國人
 

namespace 測試
{
    delegate int MyLambda1(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int  
    delegate void MyLambda2(string i);//不存在返回值
    delegate bool MyLambda3(int i,int j);
    class Test1
    {
        static void Main(string[] args)
        {
           GotoMyLambda();
        }
        public static void GotoMyLambda()
        {
            MyLambda1 myDelegate1 = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
            int j = myDelegate1(5); //j用於接受上面聲明delegate定義,返回類型的值。
            Console.WriteLine(j);

            MyLambda2 myDelegate2 = x => Console.WriteLine(x);
            myDelegate2("你好,中國人!");//不存在返回值情況,如果強制返回會編譯不通過

            MyLambda3 myDelegate3 = (x, y) => x == y;//表達式左邊是形參值,多個用(type parameters[].....)
            //MyLambda3 myDelegate3 = (int x, int y) => x == y  (int x, int y)同上可以指明類型
            Console.WriteLine(myDelegate3(3,5));
            Console.ReadKey();
        }
    }
}

輸出結果爲:
25
你好,中國人
false
 

namespace 測試
{
    delegate int MyLambda1(int i); //通過關鍵字delegate,聲明委託(MyLambda)、返回值int、參數int  
    delegate void MyLambda2(string i);//不存在返回值
    delegate bool MyLambda3(int i,int j);
    delegate string MyLambda4();
    class Test1
    {
        static void Main(string[] args)
        {
           GotoMyLambda();
        }
        public static void GotoMyLambda()
        {
            //1
            MyLambda1 myDelegate1 = x => x * x; //MyLambda--類型、myDelegate--簡化理解爲定義的方法名、x形參調用時傳遞的參數
            int j = myDelegate1(5); //j用於接受上面聲明delegate定義,返回類型的值。
            Console.WriteLine(j);

            //2
            MyLambda2 myDelegate2 = x => Console.WriteLine(x);
            myDelegate2("你好,中國人!");//不存在返回值情況,如果強制返回會編譯不通過

            //3
            MyLambda3 myDelegate3 = (int x, int y) => x == y;//表達式左邊是形參值,多個用(type parameters[].....)
            Console.WriteLine(myDelegate3(3,5));

            //4
            MyLambda4 myDelegate4 = () => "Hi,你好武漢人!"; //沒有參數時,左邊用()表示
            Console.WriteLine(myDelegate4());

            //5無返回值和無參不做討論

            Console.ReadKey();
        }
    }
}

輸出結果爲:
25
你好,中國人
false
Hi,你好武漢人!


以上是個人蔘考文檔所做的筆記,如果存在問題,望大家指出謝謝。 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章