【转帖】.NET自定义事件小结

最近工作需要封装一些自定义事件,对这块不熟悉所以查资料查到这篇文章,果然还是代码加注释最好懂啊(说这话的绝对都是程序员!!!一辈子的!!!)。

关于事件各位应该都不陌生,相信每个程序员都可以拍着胸脯说“事件?我知道啊~”,可如何自定义事件?也许有人心中就不是那么底气十足了。还是老规矩吧,高手绕行~

用很多地方都被引用到泛滥的一个例子来写吧,始作俑者就不去深究了。描述是这样的:小偷进入时,事件发送者(猫)发送猫叫事件(自定义),(事件接收者)主人订阅猫叫事件并处理(抓住小偷),事件的参数传递的是小偷的数量。

下面就给出实现的具体步骤---已经在代码注释中标明,以供各位博友抽象出自定义事件的流程。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 自定义事件
{
//http://www.cnblogs.com/DebugLZQ
//自定义事件步骤的示例代码

//0.定义事件传递的参数
class AlarmEventArgs : EventArgs
{
public int numberOfThief;
public AlarmEventArgs(int n)
{
numberOfThief = n;
}
}
//事件的发出者
class Dog
{
//1.声明事件的委托
public delegate void AlarmEventHandler(Object sender, AlarmEventArgs e);
//2.声明事件
public event AlarmEventHandler Alarm;
//3.引发事件的函数
public void OnAlarm(AlarmEventArgs e)
{
if (this.Alarm != null)
{
Console.WriteLine("The dog is Wangwang...");
this.Alarm(this, e); 
}
}
}
//事件的订阅者
class Host
{
//4.订阅事件
public Host(Dog dog)
{
dog.Alarm += new Dog.AlarmEventHandler(HostHandleEvent);
}
//5.事件处理程序
public void HostHandleEvent(Object sender, AlarmEventArgs e)
{
Console.WriteLine("Host caught the thief! The sum is "+e.numberOfThief);
}
}

class Program
{
static void Main(string[] args)
{

Console.WriteLine("Program is running...");

Dog dog = new Dog();
Host host = new Host(dog);

Console.WriteLine("Someone is coming...");
//6.在合适的时候引发事件
AlarmEventArgs alarmEventArgs = new AlarmEventArgs(3);
dog.OnAlarm(alarmEventArgs);

Console.ReadKey();
}
}
}

程序运行结果如下:

注释很完善,就是猫啊狗啊什么的原作者有点分不清楚- -。

封装什么的,好是好,就是各种大工作量啊。封装事件,封装异常,封装对象。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值