The function bound to a delegate is executed by calling the delegate's
Execute() function. You must check if delegates are "bound" before executing them. This is to make the
code more safe as there may be cases where delegates have return values and output parameters that are uninitialized and subsequently accessed. Executing an unbound delegate
could actually scribble over memory in some instances. You can call
IsBound() to check if the delegate is safe to execute. Also, for delegates that have no return value,
you can call
ExecuteIfBound(), but be wary of output parameters that may be left uninitialized.
See Multi-cast Delegates for details on executing multi-cast delegates.