Я понимаю, что объявление делегата выглядит примерно так:
public delegate int PerformCalculation(int x, int y);
Тем не менее, должно быть больше. Цель делегата — предоставить указатель на метод, и для этого вы инкапсулируете ссылку на метод в делегате.
В какой структуре хранится эта ссылка (внутри делегата)? Я также понимаю, что вы можете инкапсулировать ссылку на несколько методов в делегате. Означает ли это, что в делегате есть массив, который их содержит?
Кроме того, какие методы определены в делегате и т. д. Что на самом деле происходит, когда вы объявляете делегат с помощью краткого кода:
public delegate int PerformCalculation(int x, int y);
?
EDIT: Некоторое уточнение. Когда вы объявляете делегата, компилятор автоматически создает для вас запечатанный класс, который наследуется от System.MulticastDelegate. Вы можете увидеть это, если посмотрите на свою сборку с помощью ildasm. Это аккуратно. По сути, с помощью одного оператора вы получаете совершенно новый класс, созданный для вас во время компиляции, и он имеет все необходимые вам функции.