位置:首頁 > 高級語言 > C#教學 > C#匿名方法

C#匿名方法

我們討論了委托用於引用具有相同簽名的委托的任何方法。換句話說,你可以調用,可以通過使用委托對象的委托引用的方法。

匿名方法提供了一種技術,通過一個代碼塊作為委托參數。匿名方法基本上都是冇有名字,隻是方法體。

不必指定一個匿名方法的返回類型;它是從方法體內的return語句來推斷。

編寫一個匿名方法的語法

匿名方法與創建委托實例,帶有delegate關鍵字聲明。例如,

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
    Console.WriteLine("Anonymous Method: {0}", x);
};

代碼塊 Console.WriteLine("Anonymous Method: {0}", x); 是匿名方法的主體。

委托既能與匿名方法以及以同樣的方式命名的方法,也就是被調用,通過將方法參數的委托對象。

示例,

nc(10);

例子:

下麵的例子演示了這一概念:

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
    class TestDelegate
    {
        static int num = 10;
        public static void AddNum(int p)
        {
            num += p;
            Console.WriteLine("Named Method: {0}", num);
        }

        public static void MultNum(int q)
        {
            num *= q;
            Console.WriteLine("Named Method: {0}", num);
        }
        public static int getNum()
        {
            return num;
        }

        static void Main(string[] args)
        {
            //create delegate instances using anonymous method
            NumberChanger nc = delegate(int x)
            {
               Console.WriteLine("Anonymous Method: {0}", x);
            };
            
            //calling the delegate using the anonymous method 
            nc(10);

            //instantiating the delegate using the named methods 
            nc =  new NumberChanger(AddNum);
            
            //calling the delegate using the named methods 
            nc(5);

            //instantiating the delegate using another named methods 
            nc =  new NumberChanger(MultNum);
            
            //calling the delegate using the named methods 
            nc(2);
            Console.ReadKey();
        }
    }
}

讓我們編譯和運行上麵的程序,這將產生以下結果:

Anonymous Method: 10
Named Method: 15
Named Method: 30