概述
  委托(Delegate) 是存有对某个方法的引用的一种引用类型变量
  委托特别用于实现事件和回调方法。所有的委托都派生自 System.Delegate 类
  委托是一个类,么它就可以被定义在任何地方,即可以定义在类的内部,也可以定义在类的外部
  委托是一种类型安全的函数回调机制, 不仅能够调用实例方法,也能调用静态方法,并且具备按顺序执行多个方法的能力
  委托只是个命令,做事情是别人,自己本身是不用做事情的
 
声明
public delegate int MyDelegate (string s);
  delegate:委托声明的关键字
  MyDelegate:委托名称
  int:返回类型
实例 
 using System;
namespace ConsoleApp1
{
public class Employee
{
public static void WatchMovie()
{
Console.WriteLine("go to watch movie");
}
}
public class Boss
{
// 声明一个委托
public delegate void ToWatchMovie();
public static void Main(string[] args)
{
// 委托具体做的事情
ToWatchMovie BossCommand = new ToWatchMovie(Employee.WatchMovie);
BossCommand();
Console.ReadKey();
}
}
}
结果
  
 
委托链
  一个委托做多件事,将做的事情拼接起来
  只有相同类型的委托可被合并
  使用 "+" 运算符进行合并
  "-" 运算符可用于从合并的委托中移除组件委托
  可以再创建一个委托被调用时要调用的方法的调用列表。这被称为委托的 多播(multicasting),也叫组播
 
实例 
 using System;
namespace ConsoleApp1
{
public class Employee
{
public static void WatchMovie()
{
Console.WriteLine("go to watch movie");
}
public static void Eat()
{
Console.WriteLine("go to eat");
}
}
public class Boss
{
// 声明委托
public delegate void BossCommand();
public static void Main(string[] args)
{
// 委托具体做的事情
BossCommand BC;
BossCommand BC1 = new BossCommand(Employee.WatchMovie);
BossCommand BC2 = new BossCommand(Employee.Eat);
BC = BC1 + BC2;
BC();
Console.ReadKey();
}
}
}
结果
 

C#-委托(十七)的更多相关文章

  1. 第十七章 委托 第十八章 Attribute 第十九章 可空值类型

    1.委托揭秘 定义一个委托,编译器会生成一个继承自System.MulticastDelegate的类,所有的委托都继承自该类. 由于委托是类,所以能定义类的地方,都能定义委托. 委托内部有一个tar ...

  2. 事件/委托机制(event/delegate)(Unity3D开发之十七)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/46539433 ...

  3. C#学习笔记(十七):委托、事件、观察者模式、匿名委托和lambert表达式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. python cookbook第三版学习笔记十七:委托属性

    我们想在访问实例的属性时能够将其委托到一个内部持有的对象上,这经常用到代理机制上 class A:     def spam(self,x):         print("class_A: ...

  5. 【转】设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

  6. 设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

  7. 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)

    一. 背景 在刚接触开发的头几年里,说实话,根本不考虑多线程的这个问题,貌似那时候脑子里也有没有多线程的这个概念,所有的业务都是一个线程来处理,不考虑性能问题,当然也没有考虑多线程操作一条记录存在的并 ...

  8. C# 优化程序的四十七种方法

    一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处: 2.在属性的get和set访问器重可使用lock添加多线程的支持. 二.readonly(运行时常量) ...

  9. 2017.2.16 开涛shiro教程-第十七章-OAuth2集成(二)客户端

    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第十七章-OAuth2集成 3.客户端 客户端 ...

随机推荐

  1. Java-jsoup-解析HTML

    /**  * jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操 ...

  2. HashMap source code view(1)

    前言 HashMap source code view 类注释 Hash table based implementation of the Map interface. This implement ...

  3. 数据库 数据去重并取id最大的数据sql

    SELECT    * FROM(SELECT        MAX(id) AS id    FROM        icbc_erp_kj_icbc_result    WHERE STATUS ...

  4. 如何提升JavaScript的任务效率?学会后教给你同事

    本文由云+社区发表 一.概述 JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事.前面的任务没做完,后面的任务只能等着.随着电脑计算能力的增强,尤其 ...

  5. Linux软件包管理之源码包、脚本安装包

    目录 1.源码包和RPM包的区别 RPM包和源码包默认安装位置: 由于安装位置不同带来的影响 2.源码包安装 ①.安装准备 ②.安装注意事项 ③.安装源码包 3.源码包卸载 4.脚本安装包 5.总结 ...

  6. Java 类的加载机制

    1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...

  7. 一篇文章详解python的字符编码问题

    一:什么是编码 将明文转换为计算机可以识别的编码文本称为“编码”.反之从计算机可识别的编码文本转回为明文为“解码”. 那么什么是明文呢,首先我们从一段信息说起,消息以人们可以理解,易懂的表示存在,我们 ...

  8. 谈谈 JAVA 的对象序列化

    所谓的『JAVA 对象序列化』就是指,将一个 JAVA 对象所描述的所有内容以文件 IO 的方式写入二进制文件的一个过程.关于序列化,主要涉及两个流,ObjectInputStream 和 Objec ...

  9. 翻译:delete语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:DELETE语句的译文. 原文:https://mariadb.com/kb/en/delete/ 我提交到MariaDB官方手册的译文:https://mariadb. ...

  10. Spring Cloud Stream如何消费自己生产的消息?

    在上一篇<Spring Cloud Stream如何处理消息重复消费>中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题.本文将继续说说在另外一个被经常问到的问 ...