事件必须在类中声明和激发,并通过委托与事件处理程序关联。事件可以分为两部分:发布者和订阅者。发布者是包含事件和委托的对象。事件和委托之间的关系也在此类中定义。发布者类的对象可以被触发。代表通知其他对象。订阅者是接收事件并提供事件处理程序的对象,发布者类的委托调用订阅者类上的方法(事件处理程序)。
本次活动应注意以下几点:
- 发布者决定何时触发事件,订阅者决定响应该事件做什么。
- 事件可以有多个订阅者,订阅者也可以处理来自多个发布者的事件。
- 没有订阅者的事件永远不会触发。
- 事件通常用于定义用户操作,例如单击按钮。
- 如果一个事件有多个订阅者,则在触发该事件时会同步调用所有事件处理程序。
- 在 .NET 类库中,事件基于 EventHandler 委托和 EventArgs 基类。
要在类中声明事件,必须首先声明事件的委托类型。例如:
public delegate void delegate_name(string status);
然后使用 event 关键字声明事件本身,如下所示:
// 基于上面的委托定义事件
public event delegate_name event_name;
在上面的示例中,定义了名为 delegate_name 和 event_name 的事件,并在触发事件时调用委托。
[使用示例] 下面,我们将通过一个具体的示例来说明如何使用事件。
using System;
namespace it-kiso.com
{
class Demo
{
static void Main(string[] args){
PublisherDemo e = new PublisherDemo(); /* インスタンス化発行者クラス*/
SubscriberDemo v = new SubscriberDemo(); /* インスタンス化購読者クラス */
e.MyEvent += new PublisherDemo.MyEntrust( v.printf );
e.SetValue("IT基礎");
}
}
/***********発行者クラス***********/
public class PublisherDemo{
private string value;
public delegate void MyEntrust(string str);
public event MyEntrust MyEvent;
public void SetValue( string s ){
value = s;
MyEvent(value); // イベントを発生する
}
}
/***********購読者クラス***********/
public class SubscriberDemo{
public void printf(string str){
Console.WriteLine(str);
}
}
} 操作的结果将是:
IT基礎




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

