C# 委托不为空和委托的target不为空有什么区别
时间: 2024-10-08 14:02:06 浏览: 25
c# 委托的本质是什么
在C# 中,委托是一种类型的引用,它存储对某个方法的引用。当你说一个委托“不为空”(null),意味着该委托已经分配了内存,并且有一个指向有效方法的引用。如果委托是null,则表示它尚未绑定到任何方法。
而“委托的target不为空”则更深入一层,它指的是委托的实际目标方法(即delegate.Target属性)是否已被设置。即使委托本身不为null,其target也可能是null,这种情况通常发生在委托还没有被调用过或者没有明确关联到任何方法时。
举个例子:
```csharp
// 委托声明
Action MyAction;
// 委托不为空,但target未设定
MyAction = null; // 这里MyAction是null
Console.WriteLine(MyAction == null); // 输出:True
// 链接到方法后,委托和target都不再为null
MyAction = () => Console.WriteLine("Hello");
Console.WriteLine(MyAction != null && MyAction.Target != null); // 输出:True
```
总结来说,“委托不为空”关注的是引用的存在,而“委托的target不为空”是指该引用所关联的具体方法实例是否存在。
阅读全文