c# event关键字的意义
来源:互联网 发布:vscode 绿色版 编辑:程序博客网 时间:2024/06/17 17:36
C#中事件是基于委托。
不使用event关键字定义委托实例对象:
- //定义一委托类型
- public delegate void MyButtonEventHandler(string msg);
- //定义MyButton类,模拟按钮对象
- public class MyButton
- {
- //定义一委托实例
- public MyButtonEventHandler Click;
- private string msg;
- /// <summary>
- /// 用于触发Click事件(模拟点击按钮)
- /// </summary>
- public void OnClick()
- {
- if (Click != null)
- {
- Click("我点击了:" + msg);
- }
- }
- //构造函数
- public MyButton(string msg)
- {
- this.msg = msg;
- }
- }
- MyButton mb = new MyButton("MyButton对象");
- //指定点击按钮后的处理方法
- mb.Click += MyButton_Click;
- /* * * * * * * * * * * * * * * * * * * * * * * *
- 注意:
- 作为一个按钮,本身正常的业务逻辑是:点击按钮后,执行响应处理方法
- 但由于mb.Click没有使用event关键字,只作为一公开普通委托实例对象
- 因此无需点击,就可任意执行处理方法,这显然不是我们所期望的^-^
- * * * * * * * * * * * * * * * * * * * * * * * * */
- mb.Click("Click为公共委托对象,可任意触发执行委托方法,而无需触发OnClick方法");
- //点击按钮触发委托方法
- //mb.OnClick();
- //响应处理方法
- private void MyButton_Click(string msg)
- {
- Response.Write(msg);
- }
使用event关键字:
- //定义一委托类型
- public delegate void MyButtonEventHandler(string msg);
- public class MyButton
- {
- //定义一委托实例(事件)
- public event MyButtonEventHandler Click;
- private string msg;
- /// <summary>
- /// 用于触发Click事件(模拟点击按钮)
- /// </summary>
- public void OnClick()
- {
- if (Click != null)
- {
- Click("我点击了:" + msg);
- }
- }
- //构造函数
- public MyButton(string msg)
- {
- this.msg = msg;
- }
- }
- MyButton mb = new MyButton("MyButton对象");
- mb.Click += MyButton_Click;
- //以下报错
- //mb.Click("Click为虽公共委托对象,但不可随意执行委托方法,因为有event关键字修饰!");
- //点击按钮后才触发委托方法(保证只有MyButton对象才可触发该事件)
- mb.OnClick();
(转自:http://blog.csdn.net/lulu_jiang/article/details/6451300)
0 0
- c# event关键字的意义
- c# event关键字的意义
- c# event关键字的意义
- [C#-1] C#中event的关键字存在的意义
- C#的event关键字
- C#中关键字event的作用
- C# 中关键字event的作用
- C#中关键字event的作用
- C#中ref和out关键字的意义
- C#的Event关键字和自定义事件总结
- static关键字的意义
- event关键字的作用
- C#中的代理委托和event关键字
- 关键字super的作用意义
- event关键字存在的必要
- c# using 的意义
- C#接口的意义
- C# 里的event
- java 注释方法
- Android基于XMPP Smack openfire 开发的聊天室(五) 【邀请、被邀请】
- IntelliJ IDEA本人常用的快捷键,留存以备未来查阅
- WR703N OpenWrt 配置流程
- JNI操作数组
- c# event关键字的意义
- Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
- ps -aux 命令详解
- mysql 模拟四
- 利用OpenCV给图像添加标注
- 在Flex4 Spark Application中设置图片背景解决方案汇总
- 关于linux系统下文件安装记录
- 为什么有时类的析构函数要定义为protected呢?
- uva 10361 - Automatic Poetry