我在另一篇博客里面说到委托,其实在.net中一般都是将委托和事件放到一块去谈。因为对于事件机制,大家已经习惯了,即便对于Http无状态传输微软也将其进行了拆分,依次引入服务器端事件。
由于自己水平有限,不敢冒昧去说什么原理,只能凭借着自己的一些浅见和大家分享一下我所理解的事件,还是直接看例子吧。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyEvent
{
//定义一个事件参数,其中包含有和此事件相关的信息
//如果事件中不需要传递特殊参数,可以直接使用EventArgs
//自定义的必须继承与EventArgs这个类
class MyEventArgs : EventArgs
{
private int i;
public int I
{
get
{
return i;
}
set
{
i = value;
}
}
}
//定义一个事件发布者
class MyEventPublisher
{
//声明一个委托,其中第一个参数,是事件的发送者也就是触发者
public delegate void keyDownHandler(object sender,MyEventArgs e);
//定义一个事件,和委托定义不同之处就是前面多了一个event
public event keyDownHandler keyDown;//OnKeyDown就是一个委托的实例,我们通过给它赋值来执行一些方法
public void OnKeyDown(object sender, MyEventArgs e)
{
if (keyDown != null)
{
keyDown(this, e);
}
}
}
//事件订阅者,就是使用事件的一方
class MyEventSubscriber
{
public void Method(object sender, MyEventArgs e)//这个类基本上和MyEventPublisher类没有关系,仅仅就是和MyEventPublisher
//中的事件参数相同
{
Console.WriteLine(e.I);
}
}
class Program
{
static void Main(string[] args)
{
MyEventPublisher pub = new MyEventPublisher();
MyEventSubscriber sub = new MyEventSubscriber();
pub.keyDown+=new MyEventPublisher.keyDownHandler(sub.Method);//订阅者注册事件
MyEventArgs er=new MyEventArgs();
er.I=3;
object o = new object();
pub.OnKeyDown(o,er);//执行事件
Console.Read();
}
}
}
上面这个例子应该是比较常见的,所有要说的都写在了注释里面,由于时间关系这里不再赘余。
分享到:
相关推荐
C#事件实例,C#事件实例,C#事件实例
c#事件机制归纳,c#事件机制归纳,c#事件机制归纳
Java + C# 事件机制理解
本例是最简单的C#事件使用的例子,实现了不同窗体之间函数的调用,适合刚接触C#的朋友查看。
C#事件与委托实例Demo源代码
C#事件与引用闹钟 出早操的闹钟 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
C#事件的简单举例 包括用户控件的事件举例 和一个类的事件举例
我看了蛮受益的,里面有蛮形象的例子,很适合初学者哦!
多线程监控文档,如果文档被修改或删除则提示。在你实验的时候,修改后记得点击保存文档,程序才能探知改变。
C# Event Bus Demo C# 事件总线实例 非常简单的事件总线实例,学习入门的基础
C# 事件的继承.txt
C# 事件委托简单封装示例,按照基本步骤实现对事件委托的一个简单封装。通常可封装在自定义控件,或者业务方法中
C#事件监视变量变化,事件推送机制,用于变量绑定场景,后台出发前台更新操作
C#语言自C/C++演变而来。它是现代、简单、完全面向对象和类型安全的。C#语言是微软公司针对.Net平台才推出来的一门新...那么在C#中,是怎样声明事件并为事件添加响应方法的呢?下面的文章对此为大家作了详细的讲述。
模拟闹钟原理,实现的闹钟,利用C# 事件与引用的原理
C#事件使用Demo(类内和类间),代码含有详细注释;类内是直接刷新FormMain UI,类间是Set窗体刷新FormMain UI /// /// 定义委托类型 /// public delegate void DelegateMainUI(); /// /// 定义委托事件 /// ...
C#事件的委托,可以看看,可能会对各位有用。
C++ 模拟 C# 事件 函数指针 尾随参数
c#事件的实例..老师的讲课实例. 简单的例题能帮你更容易理解事件的知识。
你知道 C#有一个内置的事件机制吗?这个东东在 Unity3D里也非常好用。