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. MNMP下nginx1.6开启支持pathinfo配置,支持thinkphp的URL格式

    对于thinkphp框架项目的访问格式有多种,其中pathinfo是默认的基本访问格式,格式为:http://hostname:port/index.php/模块名/action名/参数1/参数1的值 ...

  2. js+ajax+springmvc实现无刷新文件上传

    话不多说直接上代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...

  3. php 会话控制(禁用cookie后session为什么会失效?)

    首先说明一点:session不一定必须依赖cookie,只是php默认客户端sessionid基于cookie方式保存. 到此,我想你也应该了解了php默认的session客户端保存方式是基于cook ...

  4. 通过jstack与jmap分析一次线上故障

    一.发现问题 下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复. 二.排查思路 简单分析下可能出问题 ...

  5. 循序渐进学.Net Core Web Api开发系列【7】:项目发布到CentOS7

    系列目录 循序渐进学.Net Core Web Api开发系列目录 本系列涉及到的源码下载地址:https://github.com/seabluescn/Blog_WebApi 一.概述 本篇讨论如 ...

  6. hdu 4605 树状数组 ****

    题目大意很简单. 有一颗树(10^5结点),所有结点要么没有子结点,要么有两个子结点.然后每个结点都有一个重量值,根结点是1 然后有一个球,从结点1开始往子孙结点走. 每碰到一个结点,有三种情况 如果 ...

  7. 垂直居中Demo

    换行文字垂直居中1 换行文字垂直居中,兼容所有浏览器 换行文字垂直居中2 换行文字垂直居中,兼容所有浏览器 固定宽高图片垂直居中1 固定宽高图片垂直居中2 图片自适应容器宽高垂直居中 CSS3垂直居中 ...

  8. Codeforces Beta Round #14 (Div. 2) D. Two Paths 树形dp

    D. Two Paths 题目连接: http://codeforces.com/contest/14/problem/D Description As you know, Bob's brother ...

  9. 接口开发-集成数据库操作(mybatis)

    关于数据存储,最常用的方式就是存到数据库,此篇以MySQL数据库为例,以mybatis框架完成数据库的操作. 一.添加对应依赖 <!-- 数据库:MySQL --> <depende ...

  10. MHDD硬盘坏道检测修复教程(转)

    MHDD算是在DOS下比较专业的检测工具,比一些GUI的好用很多,并且现在有人专门做成硬件机器卖到了电脑城,电脑城一般倒卖硬盘的都使用这种机器. 进入MHDD 上面图片中就可以看到硬盘是ST34081 ...