在C#中,委托(Delegate) 是类型安全的函数指针,是实现事件和回调机制的核心机制。以下从基础到高级的深度解析:
一、委托的本质
-
类型安全的函数容器
委托是一个类(System.MulticastDelegate
的子类),存储对方法的引用,包含目标对象和方法指针。 -
编译器的魔法
声明delegate void MyDelegate(int x);
时,编译器会自动生成一个继承自MulticastDelegate
的类,包含Invoke()
、BeginInvoke()
、EndInvoke()
方法。
二、委托的核心特性
1. 基础用法
csharp
delegate int MathOp(int a, int b); // 声明委托类型
public int Add(int a, int b) => a + b;
public int Multiply(int a, int b) => a * b;
MathOp op = Add; // 绑定方法
int result = op(2, 3); // 调用委托,输出5
op = Multiply;
result = op(2, 3); // 输出6
2. 多播委托(Multicast Delegate)
- 通过