【发布时间】:2012-03-21 12:58:18
【问题描述】:
我声明了一个委托:
public delegate void Del(string message);
然后我创建了一个要添加到委托的函数:
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}
现在我将函数添加到委托并调用它:
Del handler = new Del( DelegateMethod);
handler("Hello World");
Console.Read();
为什么当我从 DelegateMethod 中删除 static 时会出现错误?
为什么我委托的函数必须是静态的?
【问题讨论】:
-
您要添加处理程序的函数在什么范围内?
-
也许您正在从静态类/函数中调用代码?我认为这是 VS 中控制台应用程序的默认设置(您的
Main函数将是静态的)。非静态函数只有在你有一个包含它们的类的实例时才能访问,而你没有 -
@musefan - 谢谢,我没有注意到我在控制台主要静态方法中。