概述
  委托(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. R语言命令汇总

    > qqplot(spear,fastrankweight)> qqplot(spear,fastrankweight,main="title")> qqplot ...

  2. eclipse制作exe文件

    1.右击你的项目,选择Export: 2.选择Java目录下的JAR file: 3.设置导出jar文件的路径,我这里选择的是桌面,点击Next: 4.这一步默认,不用改动,直接Next: 5.设置项 ...

  3. Oracle性能优化之查询语句通用原则

    作者早期文章 Oracle优化 索引是表的一个概念部分 , 用来提高检索数据的效率, ORACLE 使用了一个复杂的自平衡 B-tree 结构 . 通常 , 通过索引查询数据比全表扫描要快 . 当 O ...

  4. TCP/IP原理浅析

    TCP/IP概述 TCP/IP起源于1969年美国国防部(DOD:The United States Department Of Defense)高级研究项目管理局(APRA:AdvancedRese ...

  5. 记一次SSM项目小结(一)

    记一次SSM项目小结(一) ssm框架 环境配置 服务器配置 解决方法  拦截器重定向到localhost nginx和tomcat中session失效 mybatis的xml文件不生效 数据库用户创 ...

  6. Go Web:自带的ServeMux multiplexer

    ServeMux简介 ServeMux扮演的角色是Multiplexer,它用来将将请求根据url路由给已注册的handler.如下图: 上图中为3个路径注册了handler,一个是"/&q ...

  7. 《Office 365开发入门指南》上市说明和读者服务

    写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...

  8. 从零开始学安全(六)●黑客常用的Dos命令

    cd   文件路径                      要切换的路径cd \                                     直接回根目录dir              ...

  9. c# 服务

    注:服务里的timer System.Timers.Timer time=new System.Timers.Timer();  time.Interval = 3000;  //设置计时器事件间隔执 ...

  10. 【CSS】小妙招,各种问题总结方法处理

    1.实现div文字溢出自动省略号截取   overflow:hidden;  /*超过部分不显示*/   text-overflow:ellipsis;  /*超过部分用点点表示*/   white- ...