代码相当于+ =对事件的赋值

Mat*_*att 5 c# events syntactic-sugar

我想知道是否有人可以告诉我相当于+ =运算符的原始代码,用于向事件添加方法.我很好奇从技术的角度来看它是如何工作的.

Mar*_*ell 10

一个event定义了一套方法,包括"增加"和"删除"(以同样的方式,一个属性定义"获取"和"设置").对此有效:

obj.add_SomeEvent(handler);
Run Code Online (Sandbox Code Playgroud)

在内部,事件可以做任何事情; 有两种常见情况:

  • 具有委托字段的事件(包括"类字段"事件)
  • EventHandlerList 实现

有了代表,它有效地使用Delegate.Combine:

handler = Delegate.Combine(handler, value);
Run Code Online (Sandbox Code Playgroud)

随着EventHandlerList有一个关键的对象:

Events.AddHandler(EventKey, value);
Run Code Online (Sandbox Code Playgroud)