C# 中的事件

2025年3月17日 | 阅读 3 分钟

事件是即将发生的特殊事情。这里我们以一个事件为例,微软为开发者推出了活动。在此活动中,微软希望开发者了解现有或新产品的特性。为此,微软将使用电子邮件或其他广告选项来告知开发者此活动。因此,在这种情况下,微软将作为发布者发起活动并通知开发者。开发者将作为事件的订阅者处理事件。

同样,在 C# 中,事件遵循相同的概念。在 C# 中,事件可以是订阅者、发布者、订阅者、通知和处理程序。通常,用户界面使用事件。这里我们将以 Windows 中的 Button 控件为例。Button 执行多个事件,例如点击、鼠标悬停等。自定义类包含事件,通过它我们将通知其他订阅者类即将发生的其他事情。因此,在这种情况下,我们将定义事件并通知其他包含事件处理程序的类。

事件是封装的委托。C# 和 .NET 都支持带有委托的事件。当应用程序的状态发生变化时,事件和委托会向客户端应用程序发出通知。委托和事件都紧密耦合以分派事件,事件处理需要委托的实现。发送事件的类称为发布者,接收或处理事件的类称为订阅者。

有关事件的要点是

有关事件的要点如下

  1. 在 C# 中,事件处理程序将接收两个参数作为输入并返回 void。
  2. 事件的第一个参数也称为源,它将发布对象。
  3. 发布者将决定何时引发事件,订阅者将决定我们必须给出什么响应。
  4. 事件可以包含许多订阅者。
  5. 通常,我们将事件用于单一用户操作,例如单击按钮。
  6. 如果事件包含多个订阅者,则同步调用事件处理程序。

事件的声明

语法

public event EventHandler CellEvent;

实现事件的步骤

要在类中声明事件,首先必须声明委托的事件类型。

          public delegate void CellEventHandler(object sender, EventArgs e);

事件的声明

public event CellEventHandler CellEvent;

事件的调用

if (CellEvent != null) CellEvent(this, e);

我们只能在声明事件的类中调用事件。

连接事件

OurEventClass.OurEvent += new ChangedEventHandler(OurEventChanged);

分离事件

OurEventClass.OurEvent -= new ChangedEventHandler(OurEventChanged);

委托充当函数的指针。它是一种引用数据类型,它持有方法的引用。所有委托都隐式派生自 System.Delegate 类。

可以使用 delegate 关键字声明委托,后面跟着签名

委托的语法

委托的示例

public delegate void PrintWord(int value);

上面的 PrintWord 委托可用于指向任何具有相同返回类型和与 PrintWord 声明的参数的方法。这里我们将举例说明如何声明和使用 PrintWord 委托。

输出

Events in C#

在上面的示例中,我们声明了 PrintWord 委托,它接受 int 类型参数并返回 void。在 main() 方法中,我们声明了 PrintWord 类型方法并分配了 PrintNum 名称方法。现在我们将调用 PrintWord 委托,它反过来调用 PrintNum 方法。同样,如果 PrintWord 委托变量分配给 PrintMoney 方法,则它将调用 PrintMoney 方法。

此外,我们可以使用 new 运算符创建委托对象并指定方法的名称,如下所示

委托可以声明如下