位置:首页 > 高级语言 > 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