C#-委托(十七)

概述
  委托(Delegate) 是存有对某个方法的引用的一种引用类型变量
  委托特别用于实现事件和回调方法。全部的委托都派生自 System.Delegate 类
  委托是一个类,么它就能够被定义在任何地方,便可以定义在类的内部,也能够定义在类的外部
  委托是一种类型安全的函数回调机制, 不只可以调用实例方法,也能调用静态方法,而且具有按顺序执行多个方法的能力
  委托只是个命令,作事情是别人,本身自己是不用作事情的
 
声明
public delegate int MyDelegate (string s);
  delegate:委托声明的关键字
  MyDelegate:委托名称
  int:返回类型

实例 
 1 using System;  2 namespace ConsoleApp1  3 {  4     public class Employee  5  {  6                 public static void WatchMovie()  7  {  8                         Console.WriteLine("go to watch movie");  9  } 10  } 11         public class Boss 12  { 13                 // 声明一个委托
14                 public delegate void ToWatchMovie(); 15                 public static void Main(string[] args) 16  { 17                         // 委托具体作的事情
18                         ToWatchMovie BossCommand = new ToWatchMovie(Employee.WatchMovie); 19  BossCommand(); 20  Console.ReadKey(); 21  } 22  } 23 }
结果
  

 
委托链
  一个委托作多件事,将作的事情拼接起来
  只有相同类型的委托可被合并
  使用 "+" 运算符进行合并
  "-" 运算符可用于从合并的委托中移除组件委托
  能够再建立一个委托被调用时要调用的方法的调用列表。这被称为委托的 多播(multicasting),也叫组播
 
实例 
 1 using System;  2 namespace ConsoleApp1  3 {  4     public class Employee  5  {  6                 public static void WatchMovie()  7  {  8                         Console.WriteLine("go to watch movie");  9  } 10                 public static void Eat() 11  { 12                         Console.WriteLine("go to eat"); 13  } 14  } 15         public class Boss 16  { 17                 // 声明委托
18                 public delegate void BossCommand(); 19                 public static void Main(string[] args) 20  { 21                         // 委托具体作的事情
22  BossCommand BC; 23                         BossCommand BC1 = new BossCommand(Employee.WatchMovie); 24                         BossCommand BC2 = new BossCommand(Employee.Eat); 25                         BC = BC1 + BC2; 26  BC(); 27  Console.ReadKey(); 28  } 29  } 30 }

 

结果

相关文章
相关标签/搜索