委托

C#里这个委托我的理解是可以看成是一个方法模板的类型。(不过并没有找到相关的理解

比如有几个返回值,参数列表类型相同的方法,就能用同个模板类型来表示,然后实例化一个委托类型就绑定上一个或多个方法,然后就可以一次调用这多个方法,相当于把方法对象化?。

using System;
namespace test {
class Test{
static void fun1(int a) {
Console.WriteLine("fun one {0}",a);
}
static void fun2(int a)
{
Console.WriteLine("fun two {0}", a);
}
static void fun3(int a)
{
Console.WriteLine("fun three {0}", a);
} //定义一个委托类型
public delegate void fun(int b);
static void Main(string[] args)
{
fun a, b, c, d,e;
//绑定方法
a = fun1;
b = fun2;
c = fun3;
d = fun1;
d += fun2;
d += fun3;
e = new fun(fun1);
//调用方法
a(1);
b(2);
c(3);
d(4);
d -= fun2;
d(4);
e(2);
Console.ReadKey();
}
}
}

事件

事件需要用到委托,或者说是一种特殊的委托。

事件比起委托其实就多了一个关键字event,起到一个对委托的保护作用,有了event,外部就无法直接去调用发布者内部的委托,因为这是不合理的,发布者何时发布这个委托函数应该是发布者自己决定的。

using System;
namespace test {
/***********发布器类***********/
public class EventTest
{
public delegate void NumManipulationHandler(); //声明委托
public NumManipulationHandler ChangeNum; //声明事件 public void OpenDoor()
{
ChangeNum(); //事件触发
}
} /***********订阅器类***********/
public class subscribEvent
{
public void printf()
{
Console.WriteLine("The door is opened.");
}
} /***********触发***********/
public class MainClass
{
public static void Main()
{
EventTest e = new EventTest(); /* 实例化事件触发对象 */
subscribEvent v = new subscribEvent(); /* 实例化订阅事件对象 */ /* 订阅器的printf()在事件触发对象中注册到委托事件中 */
e.ChangeNum += new EventTest.NumManipulationHandler(v.printf);
e.OpenDoor(); /* 触发了事件 */
e.ChangeNum();
Console.ReadKey();
}
}
}

C#委托和事件的简单实例的更多相关文章

  1. C#委托与事件的简单使用

    前言:上一篇博文从原理和定义的角度介绍了C#的委托和事件.本文通过一个简单的小故事,来说明C#委托与事件的使用方法及其方便之处. 在阅读本文之前,需要你对委托和事件的基本概念有所了解.如果你是初次接触 ...

  2. C#中委托和事件的区别实例解析

    这篇文章主要介绍了C#中委托和事件的区别,并分别以实例形式展示了通过委托执行方法与通过事件执行方法,以及相关的执行流程与原理分析,需要的朋友可以参考下 本文实例分析了C#中委托和事件的区别,分享给大家 ...

  3. C# 委托和事件,简单示例说明问题

    先看看示例效果 按照国际惯例,得先说说概念. 委托(C# 编程指南) 事件(C# 编程指南) 以上内容来自MSDN. 委托源码 [委托] 概念和代码都有了.剩下的就是应用了,要是只知道概念不会用,那还 ...

  4. C# 委托和事件(一):最简单的委托和事件

    C#的事件基于委托,所以先说委托. 一切脱离实际场景的抽象概念新手看上去就像是在扯犊子,不错,我就是个新手.所以我需要一个实际的场景. 明天刚好考试(商务英语),考试上有两个角色(class):老师( ...

  5. C#委托与事件--简单笔记

    委托 简单记录点东西 适合似懂非懂的朋友看看 委托类型用来定义和响应应用程序中的回调. 借此可以设计各种有面向对象特性的代码模式.下面要说的事件在我看来就是委托的一种实现,再深一步讲,利用委托加事件, ...

  6. js实例分析JavaScript中的事件委托和事件绑定

    我们在学习JavaScript中,难免都会去网上查一些资料.也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非.以下全部称为“事件委托”),尤其是在查JavaScript的事件处 ...

  7. [转载]C#委托与事件--简单笔记

    原文地址:https://www.cnblogs.com/joeymary/p/8486358.html 委托 简单记录点东西 适合似懂非懂的朋友看看委托类型用来定义和响应应用程序中的回调.借此可以设 ...

  8. 简单理解和使用 C# 委托与事件

    委托和事件 委托:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程 ...

  9. C#基础篇 - 理解委托和事件

    1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托是C#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针.简单理解,委托是一种可以把函数当做参数传递的类型.很多情况下,某 ...

随机推荐

  1. 吴裕雄--天生自然 Hadoop大数据分布式处理:centos7修改系统时间、时区

    cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改完后需要重启.

  2. json转换为go类文件,js脚本,nodejs执行

    js写的代码生成脚本,json生成对应的go type对象 作json转换用 js脚本无甚何依赖,可以直接运行 执行前,按需更改文件 示例 var topname="Data"; ...

  3. python往mysql数据库中写入数据和更新插入数据

    本文链接:https://blog.csdn.net/Mr__lqy/article/details/85719603 1. 连接mysql import pymysql db = pymysql.c ...

  4. springboot学习笔记:4.logback日志配置

    springboot中日志组件推荐使用logback: 由于springboot内置了logback,所以可以直接在application.properties中配置:如果要功能丰富些,则配置下log ...

  5. 林轩田机器学习基石笔记4—Feasibility of Learning

    上节课介绍了机器学习可以分为不同的类型.其中,监督式学习中的二元分类和回归分析是最常见的也是最重要的机器学习问题.本节课,我们将介绍机器学习的可行性,讨论问题是否可以使用机器学习来解决. 一.Lear ...

  6. Office 365 的安装方法

    一.在线安装 进入网址 https://www.office.com/ 使用office账号登陆 1.点击右上角安装office应用,选择第二项 其他安装选项 2.选择安装语言 点击高级,选择安装版本 ...

  7. CF-1117C-Magic Ship

    二分 C - Magic Ship GNU C++11 Accepted 31 ms 1700 KB #include "bits/stdc++.h" using namespac ...

  8. 吴裕雄--天生自然python学习笔记:Python MySQL - mysql-connector 驱动

    本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器. 我们可以使用 pip 命令来安装 mysql-c ...

  9. Nginx笔记总结十五:nginx+keepalive+proxy_cache配置高可用nginx集群和高速缓存

    nginx编译 wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz ./configure --prefix=/usr/loca ...

  10. html常用事件

    1.onblur 当窗口失去焦点时运行 2.click 点击鼠标触发的事件 3.onfocus 当窗口获得焦点时运行 4.oninput 当元素获得用户输入时运行 5.onsubmit 当提交表单时运 ...