Мне было интересно, может ли кто-нибудь рассказать мне исходный код, эквивалентный оператору + = для добавления метода к событию. Мне любопытно, как это работает с технической точки зрения.Код, эквивалентный + = присвоение событию
5
A
ответ
10
event
определяет набор методов, включая «добавить» и «удалить» (так же, как свойство определяет «get» и «set»). это эффективно:
obj.add_SomeEvent(handler);
Внутренне мероприятие могло бы сделать что угодно; есть 2 случая:
- событие с полем делегата (в том числе "на места, как" события) реализации
EventHandlerList
С делегатом, он эффективно использует Delegate.Combine
:
handler = Delegate.Combine(handler, value);
С EventHandlerList
есть ключевой объект:
Events.AddHandler(EventKey, value);