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();
}

复制代码

 

 
posted @   木木木林森  阅读(338)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示