1》》》

在委托实例前,不加event,那这个委托就是一个普通的委托,我们可以用别的函数调用,也可以直接用对象调用,但加上关键字之后,只能用成员函数调用

  1. public delegate void MyButtonEventHandler(string msg);
  2. public class MyButton
  3. {
  4. public MyButtonEventHandler Click;
  5. private string msg;
  6. public void OnClick()
  7. {
  8. if (Click != null)
  9. {
  10. Click("我点击了:" + msg);
  11. }
  12. }
  13. //构造函数
  14. public MyButton(string msg)
  15. {
  16. this.msg = msg;
  17. }
  18. }
 
  1. MyButton mb = new MyButton("MyButton对象");
  2. //指定点击按钮后的处理方法
  3. mb.Click += MyButton_Click;
  4. mb.Click("Click为公共委托对象,可任意触发执行委托方法,而无需触发OnClick方法");
  5. //点击按钮触发委托方法
  6. //mb.OnClick();
  7. //响应处理方法
  8. private void MyButton_Click(string msg)
  9. {
  10. Response.Write(msg);
  11. }

使用event关键字:

  1. //定义一委托类型
  2. public delegate void MyButtonEventHandler(string msg);
  3. public class MyButton
  4. {
  5. //定义一委托实例(事件)
  6. public event MyButtonEventHandler Click;
  7. private string msg;
  8. ///
  9. /// 用于触发Click事件(模拟点击按钮)
  10. ///
  11. public void OnClick()
  12. {
  13. if (Click != null)
  14. {
  15. Click("我点击了:" + msg);
  16. }
  17. }
  18. //构造函数
  19. public MyButton(string msg)
  20. {
  21. this.msg = msg;
  22. }
  23. }
  1. MyButton mb = new MyButton("MyButton对象");
  2. mb.Click += MyButton_Click;
  3. //以下报错
  4. //mb.Click("Click为虽公共委托对象,但不可随意执行委托方法,因为有event关键字修饰!");
  5. //点击按钮后才触发委托方法(保证只有MyButton对象才可触发该事件)
  6. mb.OnClick();

2》》》》》》》

delegate 委托
event 事件
事件是特殊的委托,是多播委托,可以添加多个事件处理函数,但是委托只能绑定一个处理函数。

c#中的delegate是Observe(观察者)设计模式的一种实现,以多播委托为底层支持,且是类型安全的。

event就是delegate的一种应用。加上ev

C# 关键字Event的更多相关文章

  1. 通过关键字Event定义用户自己的事件

    Event 语句 定义用户自定义的事件. 语法[Public] Event procedurename [(arglist)] Event 语句包含下面部分: 部分 描述 Public 可选的.指定该 ...

  2. C# 关键字【转】

      C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列 ...

  3. 【C#学习笔记之一】C#中的关键字

    C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列出的 ...

  4. C# event 事件学习

    C# event 事件学习 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-26 章节: 简单事件编写 模拟 WPF 控件传递 ...

  5. jquery 添加关键字小插件

    模块化封装,兼容seajs /** * User: c3t * Date: 14-3-25 * Time: 下午4:16 */ define(function (require, exports, m ...

  6. C# 事件 Event

    一.事件是什么 微软的定义:和委托类似,事件是后期绑定机制. 实际上,事件是建立在对委托的语言支持之上的.事件是对象用于(向系统中的所有相关组件)广播已发生事情的一种方式. 任何其他组件都可以订阅事件 ...

  7. Java进击C#——语法之知识点的改进

    本章简言 上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知 ...

  8. MySQL事件 Events

    MySQL事件 Events   一.关键字: EVENT   二.语法: CREATE EVENT? [IF NOT EXISTS ] //如果不存在则创建 event_name? ON SCHED ...

  9. UGUI代码分析

    1.canvas,screen模式和world模式区别:screen的绑定摄像机与canvas相对位置不会改变不可改变canvas,world模式下有个event camera相对位置可改变,canv ...

随机推荐

  1. linux 时间戳

    一.https://www.cnblogs.com/33debug/p/6632172.html 二.显示前一小时时间 date -d '-1 hour' '+%F-%H-%M-%S'

  2. has the wrong structure

    mysql 5.6升级到5.7之后报错 root@localhost:mysql.sock [test]>show variables like '%log%' ; ERROR 1682 (HY ...

  3. Github如何撤销提交并清除痕迹

    1.在命令行工具中进入项目目录 cd /Users/mac.manon/workspace/QuickCodes 2.sudo git reset --hard HEAD~4 根据提示输入本系统登录密 ...

  4. cookie之困

    参见http://yun.baidu.com/share/link?shareid=1575530779&uk=1795493794 cookie三元组(name,domain,path),它 ...

  5. Python3 决策树ID3算法实现

    # -*- coding: utf-8 -*- """ Created on Wed Jan 24 19:01:40 2018 @author: markli 采用信息增 ...

  6. hdu 3033(好题,分组背包)

    I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  7. 【python学习-5】面向对象的python

    python是一种面向对象的编程语言,虽然与C++一样,支持面向过程的程序设计,python完全可以使用函数.模块等方式来完成工作,但是当使用python编写一个较大的项目时,则应该考虑使用面向对象的 ...

  8. 开发人员如何正确对待BUG?

    ‌1.前端开发与后端开发 出了问题,最重要的是先找到方法迅速解决,而不是去互相指责.前端存在这样的思维模式,后端也存在这样的思维模式,这种思维模式不太好.出了问题,最好先检查一下自己,反省是不是自己这 ...

  9. Django模版语言inclusion_tag的用法。

        inclusion_tag.它多用于一个HTML片段的.例如我写的一个BBS项目中. 一个博主的主页面的左侧栏和查看博主某篇文章的页面的左栅栏的一样的.为了不用重复写同样的代码.且提高页面的扩 ...

  10. 我的php.ini上传文件配置

    可以通过phpinfo查看.当前的配置信息 # php -i | grep php.ini              //查看php.ini位置 file_uploads = on          ...