[英]C# EventHandler
class Program
{
public delegate void mydel();
public static event mydel myevent;
static void del()
{
Console.WriteLine("Called in del");
}
static void Main(string[] args)
{
myevent = del;
myevent += new EventHandler(del);
myevent();
Console.ReadLine();
}
}
myevent += new Eventhandler(del);
该行不起作用...它生成错误“对'del'不重载匹配委托'System.EventHandler'”
只需添加处理程序:
static void Main(string[] args)
{
myevent += del;
myevent();
Console.ReadLine();
}
您的事件不是EventHandler 。 您的事件属于mydel
类型。
public delegate void mydel(); // declaring the delegate
public mydel myevent; // declaring an event of type mydel with signature void mydel()
public void del() {...} // this method fit the delegate
// myevent += new EventHandler(del); // myevent is not an EventHandler
问题出在线路上
myevent = del;
myevent += new EventHandler(del);
只需删除它们并替换syntex。
向事件注册的正确语法是:
myevent += new mydel(del);
要么
myevent += del;
但不像你那样
myevent = del;
您还应该始终在调用不为null的事件之前进行检查。
因此您的代码应为:
class Program
{
public delegate void mydel();
public static event mydel myevent;
static void del()
{
Console.WriteLine("Called in del");
}
static void Main(string[] args)
{
myevent += new mydel(del);
if(myevent != null)
{
myevent();
}
Console.ReadLine();
}
}
要了解有关事件和注册的更多信息,请在此处阅读:
+ =运算符用于将委托实例添加到发布者中事件处理程序的调用列表中。 请记住,多个订阅者可以注册该事件。 使用+ =运算符可将当前订阅者附加到基础委托的调用列表中。
简化您的代码,然后它将像魔术一样工作!
static void Main(string[] args)
{
myevent += del;
myevent();
Console.ReadLine();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.