您的位置:首页 > 编程语言 > C#

C#事件-事件本身就是一种多播委托

2012-06-28 08:57 330 查看
C#中的事件就是委托的一个变量。它和属性、方法一样,都是类的成员。只不过事件是指向一个方法,当事件被触发时,就会执行对象的相关方法。
事件的这种对方法的引用并不是写死在代码里面的,而是可以进行更改的。辟如:我们在DotNet中按钮的OnClick事件,它可以指向符合OnClick事件签名的任何一个方法。
1.事件的定义使用event关键字:
public event CryHandler DuckCryEvent;

其中的CryHandler是一个delegate。从上面的代码我们可以看出来:事件就是一个委托类型的变量。
private delegate void CryHandler();

2.指定事件处理程序:
指定事件处理程序就是为事件挂接方法的过程。
DuckCryEvent +=new CryHandler(Cry);
public void Cry()
{
Console.WriteLine("我是一只小鸭,呀依呀依呀....");
}

3.执行事件
执行事件就是调用事件所指向方法的过程。一般对事的执行代码写在相应的方法或属性中,如果方法或属性被调用时就触发事件。
public void BeShaked()
{
DuckCryEvent();
}

4.完整的例子:


using System;
public delegate void CryHandler();
//玩具小鸭的类
class Duck
{
//定义小鸭的唱歌事件
public event CryHandler DuckCryEvent;
public Duck()
{
//把小鸭唱歌的事件挂接到Cry方法上
DuckCryEvent += new CryHandler(Cry);
}
//小鸭唱歌事件对应的处理方法
public void Cry()
{
Console.WriteLine("我是一只小鸭,呀呀呀....");
}
//小鸭被摇动
public void BeShaked()
{
//执行事件
DuckCryEvent();
}
}

class Class2
{
public static void Main(string[]args)
{
//买一只小鸭
Duck d = new Duck();
//摇一摇小鸭,它就会调触发小鸭的Cry事件,小鸭就会唱歌
d.BeShaked();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: