为什么我能在此参数中使用方法名而不是委托?

时间:2012-07-07 03:57:59

标签: c# delegates

public delegate void HandlerDelegate(int val);

public class Process
{
    public static void Execute(HandlerDelegate del)
    {
        del(5);
    }
}

class Program
{
    static void Main(string[] args)
    {
       //HandlerDelegate handler = Task; normally I would do this first
        Process.Execute(Task); // but this works - how?
    }

    public static void Task(int val)
    {
      Console.WriteLine(val);
    }         

}

我知道委托是对方法的引用,但是我如何能够将看起来像方法名称的方法传递给接受委托作为其参数的方法?

1 个答案:

答案 0 :(得分:2)

它只是实例化委托

的众多方法之一

例如:

public delegate void Del<T>(T item);//delegate
public void Notify(int i) { }//instance method

使用通知

方法实例化上述代理 Del 的不同方法
Del<int> d1 = new Del<int>(Notify);

OR

Del<int> d2 = Notify;

More info here