是否需要为委托创建新实例?

Does new instance need to be created for delegate?

我只是在玩委托,但我对它的工作感到困惑。 在下面的代码中

public delegate void HelloFunctionDelegate(string Message);

public static void Main()
{
    //HelloFunctionDelegate del = new HelloFunctionDelegate(Hello1);
    //del("hello from delegate");
    Console.WriteLine("Hello World");       
    Hello(Hello1);      
}

public static void Hello(HelloFunctionDelegate del)
{
    del("This is it");//we did not create instance of delegate 
}

public static void Hello1(string strMessage)
{
    Console.WriteLine(strMessage);
}

这里它在 ways.we 可以通过创建新实例(注释代码)和不创建新的委托实例(HelloFunctionDelegate)来传递方法?它们有什么区别?

没有区别。即使看起来您没有创建委托的新实例,您仍然隐式创建委托的新实例,通过method group conversion.

这里:

Hello(Hello1);  

方法组转换将方法组表达式 Hello1 转换为委托类型 HelloFunctionDelegate 的实例,如规范中所指定:

The result of the conversion is a value of type D, namely a newly created delegate that refers to the selected method and target object.