After completing this chapter, you will be able to
Declare a delegate type to create an abstraction of a method signature.
Create an instance of a delegate to refer to a specific method.
Call a method through a delegate.
Define a lambda expression to specify the code to be executed by a delegate.
Declare an event field.
Handle an event by using a delegate.
Raise an event.
Many of the examples and exercises in this book have placed great emphasis on the careful definition of classes and structures to enforce encapsulation. In this way, the implementation of the methods in these types can change without unduly affecting the applications that use them. However, sometimes it is not always possible ...