日期:2014-05-17  浏览次数:20938 次

c# 委托 事件 EventHandler 观察者模式 详解,以及和java的比较


C#和java比较: java中使用的是接口。

C#使用委托机制,可以用时 + 运算符进行注册,直接多播。 而java中是一般是使用一个集合来保存观察者。


发布者(Publisher)= 被观察者 (Observable) = 事件源(java中的EventObject,C#中的sender)

订阅者(Subscriber)=观察者(Observer)     = 接收者(java中继承EventLister,接口, 或Observer接口, C#由于委托机制,不需要继承接口,直接按EventHandler实现回调方法


在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。

在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件。可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理的事件。IDE 会自动添加空事件处理程序方法和订阅事件的代码。


EventHandler为C#中的预定义委托,专用于表示不生成数据的事件的事件的处理程序方法。

public delegate void EventHandler(
	Object sender,
	EventArgs e
)

事件概述

事件具有以下特点: