C#委托 (代理)
案例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 委托
{
delegate void Del(int a,int b); //定义Del委托(只能在main()函数外面定义)
class Program
{
static void Main(string[] args)
{
Del del = new Del(Add); //创建一个指向Add方法的委托引用
del += new Del(Subtract); //使del引用指向不同的方法,创建多重委托
del(10,3); //通过del调用方法
}
static void Add(int a, int b)
{
Console.WriteLine("相加结果是:{0}", a+b);
}
static void Subtract(int a, int b)
{
Console.WriteLine("相减结果是:{0}", a - b);
}
}
}
程序输出结果如下:
- 定义委托
delegate void Del(int a,int b); - 实例化委托
Del del = new Del(Add); - 调用委托
del(10,3);
1.委托定义
delegate 类型 名称 (参数);
例:delegate int Del(int a);
delegate是关键字,del名称用户自定义
2.委托引用的声明
Del del = null; //创建一个指向空引用
也可以在声明的同时添加指向
Del del = new Del(方法名); //创建一个指向某方法的委托引用
注意:委托引用方法的类型和参数必须跟委托保持一致
3.委托的使用
如案例
Del del = new Del(Add); //创建一个指向Add方法的委托引用
del(10,3); //通过del调用方法
4.创建和移除多重委托
1.创建多重委托
del += new Del(方法名);
- 调用委托时,会将该引用指向的方法依次执行
2.移除多重委托
del -= new Del(方法名);