In the programming world (particularly in the realm of C#), a delegate is an anonymous function pointer, which allows a function or method to be fully encapsulated and passed as an argument to other functions. The main benefit of using a delegate is that it allows for cleaner divisions of functionality among objects.

Delegates have obvious applications in threading and event handling. For a more general explantion of how delegates apply to events, have a look at ariels' node on callbacks.