ECMA-334: 22. Delegates
Microsoft .NET Framework, ASP.NET, Visual C# (CSharp, C Sharp, C-Sharp) Developer Training, Visual Studio
| C# Language Specification |
| © 2006 ECMA International |
22. Delegates
[Note: Delegates enable scenarios that some other languages have addressed with function pointers. However, unlike function pointers, delegates are object-oriented and type-safe. A delegate encapsulates both an object instance and a method. end note]
A delegate declaration defines a class that is derived from the class System.Delegate. A delegate instance
encapsulates one or more methods, each of which is referred to as a callable entity. For instance methods, a
callable entity consists of an instance and a method on that instance. For static methods, a callable entity
consists of just a method. Given a delegate instance and an appropriate set of arguments, one can invoke all
of that delegate instance’s methods with that set of arguments.
[Note: An interesting and useful property of a delegate instance is that it does not know or care about the classes of the methods it encapsulates; all that matters is that those methods be consistent (§22.1) with the delegate’s type. This makes delegates perfectly suited for "anonymous" invocation. end note]