C#委托
1. 委托
委托就是一个函数模板,或者你也可以理解为是一个变量,不同的是一般的变量是存储值的,而委托存储的是方法。
1.1 委托的定义和简单使用
在C#中,委托是使用delegate
来定义的,它看起来像一个虚方法,但是却不是。
委托的定义格式:
delegate 返回类型 委托名();//委托明遵循变量名定义规则
在简单的使用就是需要声明委托,赋值,再使用
public delegate int OneNum(int a);//定义一个委托,表示只能给这个委托赋值的方法的返回值是int类型,有一个int类型的参数 private static int DoubleNum(int a) { //这个方法是让指定的数字变成二倍,随便定义的 return a*2; } static void Main(string[] args) { //声明 OneNum oneNum = null; //赋值 oneNum = DoubleNum; //或者直接声明+赋值 //OneNum oneNum = DoubleNum; //或者 //OneNum oneNum = new OneNum(DoubleNum); //使用 Console.WriteLine(oneNum(10)); }
输出的结果就是:20
1.3 多播委托
委托分为多播委托和单播委托,单播委托就是我们上面所说的,里面只含有一个方法,所以我们通过委托调用的时候,也是只调用那一个方法。
而多播委托其实就是一个方法集合,放你调用多播委托的时候,就会将多播委托这个集合遍历,挨个调用里面的方法。
其实单播委托也可以看成是只有一个成员的多播委托。
使用多播委托的方法就是:委托变量 += 方法;
static void Test1()
{
Console.WriteLine("Test1");
}
static void Test2()
{
Console.WriteLine("Test2");
}
static void Main(string[] args)
{
Action action = null;
action += Test1;//也可以action = Test1;但是最好使用+=。
action += Test2;
action();
}
就是这样使用。
多播委托最好使用返回类型为void的,因为多播委托只能返回最后一个方法的返回类型。
而将方法从多播委托中移除的方法就是使用-=
符号。
static void Test1()
{
Console.WriteLine("Test1");
}
static void Test2()
{
Console.WriteLine("Test2");
}
static void Main(string[] args)
{
Action action = Test1;
action += Test2;
Console.WriteLine("未移除时:");
action();
Console.WriteLine("移除后:");
action -= Test1;
action();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?