Multicasting
At times, it is desirable to call two (or more) implementing methods through a single delegate. This becomes particularly important when handling events (discussed later in this chapter).
The goal is to have a single delegate that invokes more than one method. This is different from having a collection of delegates, each of which invokes a single method. In the previous example, the collection was used to order the various delegates. It was possible to add a single delegate to the collection more than once, and to use the collection to reorder the delegates to control their order of invocation.
With multicasting, you create a single delegate that will call multiple encapsulated methods. For example, when a button is pressed, you might want to take more than one action. You could implement this by giving the button a collection of delegates, but it is cleaner and easier to create a single multicast delegate.
Two delegates can be combined with the addition operator
(+
). The result is a new multicast delegate that
invokes both of the original implementing methods. For example,
assuming Writer
and Logger
are
delegates, the following line will combine them and produce a new
multicast delegate named myMulticastDelegate
:
myMulticastDelegate = Writer + Logger;
You can add delegates to a multicast delegate using the plus-equals
(+=
) operator. This operator adds the delegate on
the right side of the operator to the multicast delegate on the left.
For example, assuming Transmitter ...
Get Programming C#, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.