【问题标题】:Code equivalent to += assignment to an event相当于 += 分配给事件的代码
【发布时间】:2010-11-16 12:20:57
【问题描述】:

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

【问题讨论】:

    标签: c# events syntactic-sugar


    【解决方案1】:

    event 定义了一组方法,包括“add”和“remove”(与属性定义“get”和“set”的方式相同)。这实际上是:

    obj.add_SomeEvent(handler);
    

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

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

    有了委托,它有效地使用了Delegate.Combine

    handler = Delegate.Combine(handler, value);
    

    EventHandlerList 有一个关键对象:

    Events.AddHandler(EventKey, value);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      相关资源
      最近更新 更多