是否需要为委托创建新实例?
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.
我只是在玩委托,但我对它的工作感到困惑。 在下面的代码中
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.