C# 事件处理程序
本文关键字:程序 事件处理 | 更新日期: 2023-09-27 18:30:36
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();
}
您的事件不是事件处理程序。您的事件属于 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);
只需删除它们并替换语法即可。
注册到事件的正确语法是:
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();
}