简化事件和委托
来源:互联网 发布:网络还原精灵 编辑:程序博客网 时间:2024/06/04 19:45
完整的文章和代码下载:http://www.dingos.cn/index.php?topic=766.0
内容
- 介绍
- 什么是委托?
- 理解事件
- event关键字
- 结束语
介绍
当我在学习事件和委托时,我看了许多文章才能明白他们是什么和如何使用他们,现在我想在这里将我学习的东西以及你需要学习的内容呈现在这里。
什么是委托?
委托和事件的概念是绑在一起的。委托可以认为是函数指针,也就是说,委托执行函数。
Delegate是一个类。当创建委托实例时,可以通过函数名(如构造委托的参数),委托执行这个函数。
每个委托都有一个签名。例如:
- Delegate int SomeDelegate(string s, bool b);
- //是委托的声明。当看到这个委托前面时,也就说委托具有返回一个整型数据和具有两个参数(string和bool)。
可以说当创建委托实例时,可以通过函数名作为创建委托的参数。值得注意的是作为同一个委托的函数有相同的函数签名,可以作为委托的参数。
考虑下面的函数:
- private int SomeFunction(string str, bool bln){...}
可以通过SomeDelegate构造器来调用这个方法,因为他们具有相同的签名。
- SomeDelegate sd = new SomeDelegate(SomeFunction);
现在sd指向SomeFunction,换句话说,SomeFunction注册了sd。如果想调用sd,SomeFunction将被调用。记住所说的注册函数。接下来处理注册的函数。
- sd("somestring", true);
现在应该知道如何使用委托,开始理解事件......
理解事件
- Button是一个类,当点击它的时候将会产生click事件。
- Time是一个类,每毫秒产生tick事件。
想知道这是如何产生的吗?通过下面的例子来学习:
这个方案:有一个名为Counter的类。类中包含名为CountTo(int countTo, int reachableNum)的方法开始从0统计到countTo,当达到reachableNum是将触发名为NumberReached的事件。
......
event关键字
许多人可能会问这样的问题:“如果没有event关键字将发生什么?”
本质上,声明event关键字是防止其他的用户的委托设置为null。这为什么这么重要?想象一下作为客户端添加委托将回调类方法列表。因此有其他客户端。这样做是好的。现在想象可以使用“+=”将代替新的“=”来设置回调方法列表。所有其他客户将不会收到他们的回调函数。在这种情形下使用event关键字解决目标。如果在Counter类中移除event关键字在应用程序中编译将会出现编译错误:
结束语
...............
完整的文章和代码下载:http://www.dingos.cn/index.php?topic=766.0
- 简化事件和委托
- 简化C#中的委托和事件
- c# 委托和委托事件
- 委托和事件
- 委托和事件
- 委托和事件
- 委托和事件
- 委托和事件
- 事件和委托
- 委托和事件
- 事件和委托学习
- 关于委托和事件
- C# 委托和事件
- 委托和事件
- 委托和事件
- 事件和委托
- 委托和事件
- 委托和事件
- 精简ASP购物车类(Session+XML)
- ubuntu + emacs + fcitx 中文输入解决方案
- JDK6中系统托盘(tray)的使用方法
- Javascript 脚本的调试经验
- 研究字符串转Unicode额外2个字节的来源
- 简化事件和委托
- C#接口基础
- Silverlight Beta 2 與 RC
- 用C语言开发DOS下的图形界面
- 100多篇编程,嵌入式,网络相关技术文章
- 适用才是王道 浅议企业如何合理选择CRM软件
- 手机电视借力奥运
- 守护企业网关
- 给多少钱就干多少活