C#中的事件(Event)和委托(Delegate)都是实现回调函数或事件处理程序的核心概念,但它们之间有一些关键区别。
定义:
语法:
event
关键字,后跟委托类型和事件名称。例如:public event EventHandler MyEvent;
delegate
关键字,后跟返回类型、委托名称和参数列表。例如:public delegate void MyDelegate(string message);
使用:
MyEvent += MyEventHandler;
private void MyEventHandler(object sender, EventArgs e)
{
Console.WriteLine("MyEvent is triggered.");
}
public void CallMethodWithDelegate(MyDelegate del)
{
del("Hello, World!");
}
private void MyMethod()
{
Console.WriteLine("MyMethod is called.");
}
// 使用委托调用方法
CallMethodWithDelegate(MyMethod);
总之,事件和委托在C#中都是实现回调函数和解耦代码的重要工具。事件是一种特殊类型的委托,用于表示对象在特定情况下通知其他对象的行为。而委托则是一个泛型类,用于表示方法的签名,可以用于将方法作为参数传递给其他方法,或者将方法作为返回值返回。