Introducing delegates
A delegate is a data type in C# that encapsulates a method that has particular parameters and return types (signatures). In other words, a delegate will define the parameters and the return type of a method. Delegates are similar to function pointers in C/C++ since both stores the reference to the method with a particular signature. Like a function pointer in C/C++, a delegate keeps a memory address of the method it refers to. The compiler will complain if it refers to a function with a different signature. However, because of the unmanaged nature of the C++ language, one can point functions to arbitrary locations (by casting).
Let's take a look at the following delegate syntax:
[AccessModifier] delegate ReturnType DelegateName([parameters]);
Here is the explanation for each element of the preceding delegate syntax:
- AccessModifier: This is the modifier that is used to set the accessibility of the delegate. It can be public, private, internal, or protected. However...