为什么“公共(public)事件 EventHandler cccc”会为空?
我有一个类是
public class Builder
{
public event EventHandler StartedWorking;
public Builder()
{
// Constructor does some stuff
}
public void Start()
{
StartedWorking(this, eventargobject); //StartedWorking is null --
}
}
这似乎很简单而且我一直都在做?我是否遗漏了一些明显的东西,或者是否有什么可能导致这种情况?
编辑:
这是否意味着如果我触发一个未在客户端类中订阅的事件,我必须检查它是否不为空?
EDIT-2:
我想我从来没有遇到过从未订阅过的事件,因此也从未遇到过这种情况—— 你每天学习新的东西 抱歉这个看似愚蠢的问题....
最佳答案
除非有人订阅了事件,否则事件处理程序将为空。一旦委托(delegate)人订阅了事件,它就不再为空。
这就是为什么总是建议使用以下形式来引发事件:
public void Start()
{
var handler = this.StartedWorking;
if (handler != null)
{
handler(this, eventArgObject);
}
}
如果没有订阅者,这可以保护您免受空异常。
关于c# - 为什么 'public event EventHandler cccc' 为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3064498/