A delegate is a pointer to a method. A delegate looks and behaves much like an ordinary method when it is called. However, when you call a delegate, the runtime actually executes the method the delegate refers to. You can dynamically change the method that a delegate references, so code that calls a delegate might actually run a different method each time it executes. The best way to understand delegates is to see them in action, so let's work through an example.