свойства; они крайне важны для понимания того, из чего состоит «экземпляр делегата», IMO.

имаю, что объявление делегата выглядит примерно так:

public delegate int PerformCalculation(int x, int y);

Однако должно быть что-то еще. Цель делегата - предоставить указатель на метод, и для этого вы инкапсулируете ссылку на метод в делегате.

В какой структуре хранится эта ссылка (внутри делегата)? Я также понимаю, что вы можете инкапсулировать ссылку на несколько методов в делегате. Означает ли это, что в делегате есть массив, содержащий их?

Кроме того, какие методы определены в делегате и т. Д. Что действительно происходит, когда вы объявляете делегата с помощью краткого:

public delegate int PerformCalculation(int x, int y);

?

РЕДАКТИРОВАТЬ: Некоторые уточнения. Когда вы объявляете делегата, компиляторавтоматически создаетзапечатанный класс, который унаследован от System.MulticastDelegate для вас. Вы можете увидеть это, если посмотрите на свою сборку с помощью ildasm. Это аккуратно. По сути, с одним утверждением вы получаете целый новый класс, сгенерированный для вас во время компиляции, и он имеет всю необходимую вам функциональность.

Ответы на вопрос(2)

Ваш ответ на вопрос