程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 匿名函數:Lambda表達式和匿名方法,lambda表達式

匿名函數:Lambda表達式和匿名方法,lambda表達式

編輯:C#入門知識

匿名函數:Lambda表達式和匿名方法,lambda表達式


匿名函數一個“內聯”語句或表達式,可在需要委托類型的任何地方使用。可以使用匿名函數來初始化命名委托,或傳遞命名委托(而不是命名委托類型)作為方法參數。

共有兩種匿名函數:

Lambda表達式(在這裡只舉例在Lambda表達式在委托中的應用)

匿名方法 

 

Lambda表達式是一種可用於創建委托或表達式目錄樹(以後再討論)類型的匿名函數。通過使用Lambda表達式,可以寫入可作為參數傳遞或作為函數調用值返回的本地函數。

若要創建Lambda表達式,需要在Lambda運算符 =>左側指定輸入參數(如果有),然後在另一側輸入表達式或語句塊。

看一個例子:

        delegate int del(int i);
        static void Main(string[] args)
        {
            //Lambda表達式用於創建委托
            del myDelegate = x => x * x;
            int j = myDelegate(5);
            Console.WriteLine(j);
        }

(input parameters)=>expression

僅當Lambda只有一個輸入參數時,括號才是可選的;否則括號是必須的。括號內的兩個或更多輸入參數使用逗號加以分割:

(x, y)=>x==y

有時,編譯器難以或無法推斷輸入類型,如果這種出現這種情況,你可以顯示指定類型:

(int x, string s)=>s.length>x

使用空括號指定領個輸入參數:

( )=>SomeMethod()

 

語句Lambda

語句Lamdba與表達式Lambda表達式類似,只是語句括在大括號中:

( input parameters ) => { statement ;}

看一個例子:

        delegate void TestDelegate(string s);
        static void Main(string[] args)
        {
            //Lambda語句用於創建委托
            TestDelegate myDel = n => { string s = n + " " + "World"; Console.WriteLine(s); };
            myDel("Hello");
        }

 

匿名方法

在2.0之前的C#版本中,聲明委托的唯一方法是使用命名方法。C# 2.0引入了匿名方法,而在C# 3.0及更高版本中,Lambda表達式取代了匿名方法,作為編寫內聯代碼的首先方式。

看一個例子:

        delegate void Printer(string s);
        static void Main(string[] args)
        {
            //委托與匿名方法關聯
            Printer p = delegate (string st)
              {
                  Console.WriteLine(st);
              };
            p("The delegate using the anonymous method is called.");

            //委托與命名方法關聯
            p = new Printer(DoWork);
            p("The delegate using the named method is called.");
            Console.ReadKey();
        }
        static void DoWork(string k)
        {
            Console.WriteLine(k);
        }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved