Delegate.Combine
静的メソッドを使用して行われます。
SomeDelegate c = Delegate.Combine(a, b) as SomeDelegate;
演算子を使用する場合+=
、実際にはまったく同じです。
// This is the same...
eventSource.onEvent += OnEvent;
// ...as this.
eventSource.onEvent = Delegate.Combine(
eventSource.onEvent,
Delegate.CreateDelegate(typeof(EventSource.OnEvent), this, "OnEvent")
) as EventSource.OnEvent;
MulticastDelegate
クラス (delegate
キーワードの背後にあるクラス) には呼び出しのリストがありますが、このリストは不変です。+=
デリゲートをオペレーターと組み合わせるたびMulticastDelegate
に、前の 2 つの Delegate オブジェクトの呼び出しリストを組み合わせて新しいインスタンスが作成されます。