Skip to content

Delegate委托

一、委托的定义与作用

委托(Delegate)是一种引用方法的类型,本质上是函数指针。可以将函数赋值给变量,以参数形式传递函数,进而实现回调、事件等功能。

  • 类似闭包函数的概念,但适用于 C# 这种静态类型语言。
  • 委托本身是类型,可实例化。
  • 委托不能重载,不能重名。

二、声明语法

[访问修饰符] delegate 返回值类型 委托名(参数列表);
  • delegate 为关键词。
  • 访问修饰符可选,默认为 public
  • 可写在 namespaceclass 块中(更多用于 namespace)。
  • 声明只是定义了委托类型,并未与任何函数关联。

三、用途

委托可作为: - 类成员 - 函数参数

常用于需要延迟执行的逻辑,例如事件处理、回调机制。

四、创建和赋值

创建委托变量并赋值有两种形式:

MyFun f = new MyFun(Fun); // 显式写法
MyFun f2 = Fun;           // 简洁写法(推荐)

注意: - Fun 是已有函数的名字,不加括号。

五、调用委托

调用委托有两种方式:

f.Invoke(参数列表); // 明确调用
f2(参数列表);       // 简洁调用(推荐)

六、绑定多个方法

委托可以绑定多个方法,使用 += 操作符:

MyFun ff = Fun;
ff += Fun;

此时,执行 ff() 会连续执行两次 Fun 方法。

适用于批量回调、事件通知等场景,可简化处理逻辑。