首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当没有订阅者时,为什么委托是空的而不是空的列表?

当没有订阅者时,为什么委托是空的而不是空的列表?
EN

Stack Overflow用户
提问于 2009-11-02 11:02:15
回答 4查看 481关注 0票数 8

有人能解释一下为什么.Net框架团队决定没有订阅者的委托应该为空,而不是具有空InvocationList的对象吗?我想知道导致这个决定的理由是什么。

代码语言:javascript
复制
void DoSomething()
{
    EventHandler handler = SomeEvent;
    if(handler != null)                   //why is this null-check necessary?
    {
        handler(this, EventArgs.Empty);
    }
}

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-02 11:09:48

在CLR级别上,委托字段和事件字段是常规字段。

就像string MyField缺省为null而不是""一样,Action MyField也缺省为null而不是空的Action实例。

票数 8
EN

Stack Overflow用户

发布于 2009-11-02 11:04:58

我同意这可能很麻烦,我个人认为这是一个错误。我想不出任何理由为什么要这样做。

票数 3
EN

Stack Overflow用户

发布于 2009-11-02 11:56:35

请参阅Jon Skeet的答案here,了解有关此问题的详细讨论。在C# 2.0中甚至可以绕过必须检查null的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1659248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档