C# 委托的三种状态分别举例
时间: 2024-10-07 17:05:18 浏览: 28
C# 24种设计模式代码及应用举例
在C#中,委托(Delegate)有三种不同的状态:
1. **未初始化(Null)**:
- 比如,当你创建一个新的委托实例但没有立即赋予任何方法:
```csharp
Action<int> myAction = null;
```
- 此时,`myAction.Method` 和 `myAction.Target` 都是 `null`,表示该委托还没有关联到任何具体的函数执行。
2. **已分配但无目标(Empty or Unassigned)**:
- 如果你在委托上赋值了一个空的操作,比如:
```csharp
Action<int> myAction = delegate {};
```
- 这里 `myAction` 被分配了内存空间,但它并没有指向实际的方法执行。`myAction.Method` 是 `null`,`myAction.Target` 也是 `null`。
3. **已分配并指向具体方法(Assigned and Targetted)**:
- 当你将一个方法的实际引用绑定到委托上时:
```csharp
void Print(int num) => Console.WriteLine(num);
Action<int> printAction = Print;
```
- 在这里,`printAction.Method` 将指向 `Print` 方法,`printAction.Target` 同样是 `null` 因为没有包含额外的信息,但在运行时它实际上会调用 `Print` 方法。
总结来说,一个委托的生命周期通常从空开始,经过分配但无目标,最终指向一个或多个具体方法。每个状态都反映了委托的不同阶段。
阅读全文