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. CentOS 下的邮件通知

    利用Shell邮件通知 echo "邮件内容" |mail -s 邮件主题 收件人地址 echo "This is Test mail."|mail -s &q ...

  2. A Connection to the remote computer could not be established

    Go to device manager: uninstall WAN Miniport (IP), Wan Miniport(IPv6) and Wan Miniport (PPTP). Refre ...

  3. Atom组件

    Atom组件 最近用Atom写博客比较多,然后发现一个很严重的问题.. 没有一个我想要的上传图片的方式,比如某乎上边就可以直接copy/paste文件,然后进行上传. 然而在Atom上没有找到类似的插 ...

  4. 【LOJ】#2126. 「HAOI2015」数组游戏

    题解 简单分析一下就知道\(\lfloor \frac{N}{i} \rfloor\)相同的\(i\)的\(sg\)函数相同 所以我们只要算\(\sqrt{n}\)个\(sg\)函数就好 算每一个\( ...

  5. Codeforces 145E Lucky Queries 线段树

    Lucky Queries 感觉是很简单的区间合并, 但是好像我写的比较麻烦. #include<bits/stdc++.h> #define LL long long #define f ...

  6. python控制selenium点击登录按钮时报错 unknown error: Element is not clickable at point

    利用python控制selenium进行一个网页的登录时报错: C:\Users\Desktop\selenium\chrome>python chrome.py selenium.common ...

  7. 报错:-bash: locate: command not found

    -bash: locate: command not found 查看某些文件在哪些地方,需要用到 locate 命令 但是在安装 yum install locate 会报以下错误: -bash: ...

  8. IT常用单词

    recursion 递归enable 使能够two-dimensional 二维failover 故障恢复.转移.切换broker 经济人 代理人Component Gallery 组件库Config ...

  9. 数据库相关--在mac OX10.11.6上安装MySQL

    一.之前失败情况 官网下载dmg文件安装.源码安装,下过5.6  5.7  8.0 版本,都可以安装成功,但是在电脑设置界面无法启动,每次点启动输入密码后,均闪一下绿色然后变红色,既然不能界面启动,那 ...

  10. Nodejs新手村指引——30分钟上手

    概要 #准备工作 #开启简单的服务 #路由 #获取参数的三种方式 #静态文件 #数据库集成 #async解决多重嵌套问题 本文适合没有nodejs项目开发经验而又想对nodejs有个大概了解的你阅读, ...