C#委托事件如何定义回调

avatar
作者
筋斗云
阅读量:0

在C#中,委托是一种类型,用于封装方法,而事件是基于委托的一种特殊类型。事件允许对象在特定情况下通知其他对象。要定义回调,您需要遵循以下步骤:

  1. 定义委托:首先,您需要定义一个委托,该委托将封装事件处理方法。例如,假设您有一个名为MyEventHandler的方法,它接受两个整数参数并返回void。您可以这样定义委托:
public delegate void MyEventHandler(int x, int y); 
  1. 定义事件:接下来,您需要在包含事件的类中定义事件。事件基于之前定义的委托。例如,您可以创建一个名为MyEvent的事件,并使用前面定义的MyEventHandler委托:
public class MyClass {     public event MyEventHandler MyEvent; } 
  1. 触发事件:当满足特定条件时,您可以在类中触发事件。这通常是通过调用raise关键字(如果C#版本为4.0或更高)或者使用OnMyEvent方法(如果C#版本为3.0或更低)来实现的。例如:
public class MyClass {     public event MyEventHandler MyEvent;      protected virtual void OnMyEvent(int x, int y)     {         MyEvent?.Invoke(x, y);     } } 
  1. 订阅事件:现在,您可以在其他类中订阅事件。为此,您需要创建一个方法,该方法将在事件触发时执行。然后,将该方法添加到事件的订阅列表中。例如:
public class MySubscriber {     public void Subscribe(MyClass myClass)     {         myClass.MyEvent += OnMyEvent;     }      public void Unsubscribe(MyClass myClass)     {         myClass.MyEvent -= OnMyEvent;     }      private void OnMyEvent(int x, int y)     {         Console.WriteLine($"Event triggered with parameters: {x}, {y}");     } } 
  1. 使用示例:最后,您可以在主程序中使用这些类来订阅事件并触发它。例如:
public class Program {     public static void Main()     {         MyClass myClass = new MyClass();         MySubscriber mySubscriber = new MySubscriber();          mySubscriber.Subscribe(myClass);          myClass.OnMyEvent(1, 2); // 这将触发事件,输出 "Event triggered with parameters: 1, 2"          mySubscriber.Unsubscribe(myClass);     } } 

这就是如何在C#中使用委托和事件定义回调。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!