让我们来回顾一下委托的内容。
委托
是一种复杂的数据类型,需要我们先定义出来。当定义好类型后,声明委托变量来使用。
可以装载方法,只可以装载具有相同返回类型和参数列表的方法。
委托变量名(参数列表); 委托变量名.Invoke(参数列表);
委托类型可以做一个参数将一个方法传给另一个方法。
回调
把委托变量传入方法中去调用。
委托的注册
委托名+=方法名 //就可以将多个方法注册进委托变量中
代码示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;namespace 索引器
{public delegate void MyDelegate();class Program{#region 委托与事件public static void Main(string[] args){//MyDelegate mydel = new MyDelegate(Test);//mydel();MyDelegate del=Test;del += Test2;del+= Test3;del.Invoke();}public static void Test3(){Console.WriteLine("这是测试委托的方法3");}public static void Test2(){Console.WriteLine("这是测试委托的方法2");}public static void Test(){Console.WriteLine("这是测试委托的方法");}#endregion}
}
运行结果如下:
通过观察委托的注册的运行结果,我们可以发现委托的本质是方法引用的队列,先进先出,一旦调用,会把队列中所有的方法执行完。
委托的注销
1.委托名-=方法名 //可以将方法从委托列表中移除。
2.委托变量一旦重新赋值,以前引用的方法全部丢失。
3.可以使用委托变量=null全部清空方法列表
例1:del-=Test2; 将该语句放入上述代码中,会出现如下运行结果:
例2:
例3:
该系列专栏为网课课程笔记,仅用于学习参考。