概念:
委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别适用于实现事件和回调方法。所有的委托都派生自System.Delegate 类
实例演示之委托声明:
public delegate int DemoDalegate(int n);
上面的委托可被用于引用任何带有一个单一的 string 参数的方法,并返回一个 int 类型变量。
声明语法:delagate <返回值类型> 委托变量名(参数列表)
委托实例:
public class DelegateContain { public delegate int NumberChanger(int p, int q); public int AddSum(int p, int q) { return p + q; } public void Test() { // 创建委托实例 NumberChanger nc = new NumberChanger(AddSum); //使用委托调用方法 Console.WriteLine("两数之和:{0}", nc(5, 3)); } }
委托多播:
多播委托是指在一个委托中注册多个方法,或者将多个委托合并成要给委托,只有类型相同的委托或者方法才能合并,
委托多播实例:
public class DelegateContain
{
public void BuyFish(int fishCount)
{
Console.WriteLine($"买了{fishCount}条鱼");
}
public void BuyFlower(int flowerCount)
{
Console.WriteLine($"买了{flowerCount}朵花");
}
public delegate void MulDelegate(int count);
public void Test()
{
//一个委托中注册多个方法
MulDelegate mulDelegate = new MulDelegate(BuyFish);
mulDelegate += BuyFlower;
mulDelegate(2);
//多个委托合并成一个
MulDelegate mulDelegate1 = new MulDelegate(BuyFish);
MulDelegate mulDelegate2 = new MulDelegate(BuyFlower);
mulDelegate1 += mulDelegate2;
mulDelegate1(3);
Console.ReadLine();
}
}
运行结果:
买了2条鱼
买了2朵花
买了3条鱼
买了3朵花