C#委托与事件的总结
2007-08-23 16:15
381 查看
这两天学习C#的委托、事件,看的我是云里雾里,还好看了几个例,总算是基本上弄懂了。在网上看到了一篇总结委托与事件的文章,写的很基础,很容易懂。
文章来源:http://www.cnblogs.com/cloudjun/archive/2006/10/07/250931.html
文章如下:
1.申明委托 ,在包里或者类里,public
public delegate void PlayGame(Object sender, EventArgs e);
2.定义呼叫者(类LetsGame)和调用委托的函数,在呼叫者里要有委托的实例(呼叫者扔出一个委托,被呼叫者给这个委托赋值)
class LetsGame{
public event PlayGame theGame;
public void startPlay(EventArgs e){
if(theGame != null){
theGame(this,e);
}
}
3. 定义被呼叫者(类MS)和具体实现的函数(被调用的函数),也就是concrete class的实现或者叫函数指针实例。打个比方,在一个叫MS的类中实现.MS中对呼叫者中委托的实例进行赋值.
class MS {
public MS(LetsGame lg) {
lg.theGame += new PlayGame(MSPlayGame);
}
public void MSPlayGame(Object sender, EventArgs e){
Console.WriteLine("Who laughs the last who wins");
}
}
这样当调用LetsGame.startPlay的时候就会调用MS.MSPlayGame.
private void InitializeComponent()
{
![](http://www.cnblogs.com/Images/dot.gif)
this.Button1.Click += new System.EventHandler(this.Button1_Click);
![](http://www.cnblogs.com/Images/dot.gif)
}
![](http://www.cnblogs.com/Images/dot.gif)
private void Button1_Click(object sender, System.EventArgs e)
{
//do sth
}
这就是用委托来实现事件.你可能发现我们并没有给它声明委托对象并通过event关键字来引用该委托对象,那是因为asp.net早就帮我们做好了该项工作,其委托对象是System.EventHandler. Button1相当于上面的LetsGame的实例,是呼叫者,Button1_Click是被呼叫方法.当你click Button1后,Button1就会调用Button1_Click.
文章来源:http://www.cnblogs.com/cloudjun/archive/2006/10/07/250931.html
文章如下:
c#委托与事件 心得
c#用委托来实现事件通知机制。委托相当与c++函数指针。整个过程涉及一个呼叫者,一个被呼叫者,还有就是这个委托。- 实现步骤
有以下几步: 1. 申明委托, 2.定义呼叫者和调用的函数, 3.定义被呼叫者和具体实现的函数(被调用的函数)1.申明委托 ,在包里或者类里,public
public delegate void PlayGame(Object sender, EventArgs e);
2.定义呼叫者(类LetsGame)和调用委托的函数,在呼叫者里要有委托的实例(呼叫者扔出一个委托,被呼叫者给这个委托赋值)
class LetsGame{
public event PlayGame theGame;
public void startPlay(EventArgs e){
if(theGame != null){
theGame(this,e);
}
}
3. 定义被呼叫者(类MS)和具体实现的函数(被调用的函数),也就是concrete class的实现或者叫函数指针实例。打个比方,在一个叫MS的类中实现.MS中对呼叫者中委托的实例进行赋值.
class MS {
public MS(LetsGame lg) {
lg.theGame += new PlayGame(MSPlayGame);
}
public void MSPlayGame(Object sender, EventArgs e){
Console.WriteLine("Who laughs the last who wins");
}
}
这样当调用LetsGame.startPlay的时候就会调用MS.MSPlayGame.
- 实际应用
对照一下c#的GUI事件处理或者asp.net的web控件事件处理,能帮我们更好的理解委托和事件.大家一定很熟悉asp.net里下面的代码private void InitializeComponent()
{
![](http://www.cnblogs.com/Images/dot.gif)
this.Button1.Click += new System.EventHandler(this.Button1_Click);
![](http://www.cnblogs.com/Images/dot.gif)
}
![](http://www.cnblogs.com/Images/dot.gif)
private void Button1_Click(object sender, System.EventArgs e)
{
//do sth
}
这就是用委托来实现事件.你可能发现我们并没有给它声明委托对象并通过event关键字来引用该委托对象,那是因为asp.net早就帮我们做好了该项工作,其委托对象是System.EventHandler. Button1相当于上面的LetsGame的实例,是呼叫者,Button1_Click是被呼叫方法.当你click Button1后,Button1就会调用Button1_Click.
相关文章推荐
- C# 委托与事件区别简单总结
- C#中委托和事件机制。。(个人总结)
- C# 委托、Lambda表达式和事件——学习总结
- C#中的委托和事件--7.总结
- C#中的委托与事件详解<个人总结>
- C#中的委托,事件,回调函数综合总结:结合了网上几位大神的例子
- C# 委托 事件 观察者模式 总结
- C#中的委托与事件详解<个人总结>
- C#中的委托和事件 (7)---总结
- C#中委托和事件机制(续)(个人总结)
- C#之入门总结_线程,委托,事件的关系_20
- C#中的委托和事件总结
- Unity&C#的委托事件总结
- C# 中的委托和事件学习总结
- c# 委托和事件(总结篇)
- 关于委托的一篇不错的文章(C# 中的委托和事件)
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C#中的委托和事件