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();
}
}
事件的这种对方法的引用并不是写死在代码里面的,而是可以进行更改的。辟如:我们在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();
}
}
相关文章推荐
- C#事件-事件本身就是一种多播委托
- C#中的委托是什么?事件是不是一种委托?
- .C#中的委托是什么?事件是不是一种委托?
- C#中的委托是什么?事件是不是一种委托?
- C#中的委托是什么?事件是不是一种委托?
- c#中的委托是什么,事件是不是一种委托
- C#中的委托是什么?事件是不是一种委托?
- C#中的委托是什么?事件是不是一种委托?
- C#中的委托是什么?事件是不是一种委托?
- C#中的委托是什么?事件是不是一种委托?
- c#中接口和类的有什么异同,c#中的委托是什么?事件是不是一种委托?事件和委托的关系
- 不理解C#的枚举,委托和事件.请求高手给个通俗易懂的例子。就是有代码和对代码的详细解释。十分谢谢
- .C#中的委托是什么?事件是不是一种委托?
- C#中的委托是什么?事件是不是一种委托?
- C# winform窗体间传值(使用委托或事件)
- Unity&C#的委托事件总结
- C# 中的委托和事件——http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
- C#事件与委托详解
- C# .net委托 事件中,事件注册方法的问题
- C#例子 易懂故事 接口 委托 事件 异步通知 好玩.