为什么不能在声明类之外调用事件或调用它们的调用列表

Tam*_*aky 2 .net c# events

面试问题:为什么不能调用事件并且从声明类之外设置调用列表?

我在本文的事件调用中找到了对问题第一部分的解释

我假设第二部分的答案在于安全性.还有其他原因需要考虑吗?

Bra*_*uff 6

面试官可能正在寻找的关键词是封装.

事件只应向潜在订阅者公开订阅取消订阅操作.调用实际上是暴露事件的类的责任.

另请注意,这public event EventHandler FooBar;是以下语法的简短形式

private EventHandler _fooBar;

public event EventHandler FooBar
{
    add
    {
        _fooBar = (EventHandler)Delegate.Combine(_fooBar, value);
    }
    remove
    {
        _fooBar = (EventHandler)Delegate.Remove(_fooBar, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅事件访问器