概述
  委托(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. IT十年经典书籍

    摘自网络,近来在浏览时,发现一个叫做“IT十年经典书籍”的主题.google了一下,实在找不出这个主题的源头出处.不过这个主题中所涉及的每一本书讲出来都是振聋发聩的,大可以作为它那个行业的经典了.  ...

  2. java数据类型大转换

    1.字符串类型向整形转换 int age = Integer.parseInt(strAge); 2 int -> String int i=12;String s="";第 ...

  3. CentOS安装使用.netcore极简教程(免费提供学习服务器)

    本文目标是指引从未使用过Linux的.Neter,如何在CentOS7上安装.Net Core环境,以及部署.Net Core应用. 仅针对CentOS,其它Linux系统类似,命令环节稍加调整: 需 ...

  4. SVN不能解锁,报错:没有匹配的可用锁令牌的解决方法

    命令行进入到要解锁的目录,执行 svn unlock 要解锁的文档名 进行解锁:若还是打不开锁,就用强制解锁 , svn unlock -f(--force) 要解锁的文档名 也可以通过 svnadm ...

  5. Facebook ATC弱网环境搭建

    用户的网络环境千姿百态,弱网的.高延时的.丢包的.常有用户反馈偶发bug,我们测试人员却始终无法复现,根据用户的描述,开发排查可能是网络不稳定导致的,所以急需建个弱网环境来测试. 弱网工具简介: Au ...

  6. MyBatis源码解析(十二)——binding绑定模块之MapperRegisty

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6758456.html 1.回顾 之前解析了解析模块parsing,其实所谓的解析模块就是为 ...

  7. 详细分析MySQL事务日志(redo log和undo log)

    innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...

  8. python列表类型

    列表类型简介 列表类型是一个容器,它里面可以存放任意数量.任意类型的数据. 例如下面的几个列表中,有存储数值的.字符串的.内嵌列表的.不仅如此,还可以存储其他任意类型. >>> L ...

  9. HDFS简单测试

    使用Hadoop的Java客户端API操作分布式文件系统#获取文件系统实现//hdfs://master01:9000/FileSystem get(URI uri[,Configuration co ...

  10. RDD内存迭代原理(Resilient Distributed Datasets)---弹性分布式数据集

    Spark的核心RDD Resilient Distributed Datasets(弹性分布式数据集)   Spark运行原理与RDD理论 Spark与MapReduce对比,MapReduce的计 ...