1.Delegation provides a type-safe callback definition. Although most common delegated applications are related to events, this is not the case for C # delegated applications. When classes need to communicate with each other and we expect a loose coupling mechanism than the interfaces, delegation is the best choice. Delegation allows us to configure the target at runtime and notify multiple customer objects.
2.The multicast delegate combines all the target functions added to the delegate into a single call. However, there are two points to note in the combination: First, if a delegate call encounters an exception, this method cannot guarantee security; second, the return value of the entire call will be the return value of the last function call.
3.During the multicast delegate call process, each target is called in sequence. The delegate object itself does not capture any exceptions. Therefore, any exceptions thrown by the target end the call of the delegate chain.