Почему метод Invoke построенного класса делегата является виртуальным?C#

Место общения программистов C#
Ответить
Anonymous
 Почему метод Invoke построенного класса делегата является виртуальным?

Сообщение Anonymous »

Я видел в CLR через C# и в статье codeproject «Делегирование за кулисами», что когда компилятор C# видит это

Код: Выделить всё

public delegate void MyDelegate(int intValue);
на самом деле генерируется что-то вроде этого

Код: Выделить всё

class MyDelegate : System.MulticastDelegate
{
public virtual void Invoke(Int32 intValue);

...
}
Вопрос: почему метод Invoke является виртуальным? Можно ли унаследовать этот сгенерированный тип делегата? С точки зрения CLR похоже, что это возможно. Но почему? Почему бы не создать запечатанный класс, чтобы не было штрафов за поиск виртуальных методов во время выполнения?

Подробнее здесь: https://stackoverflow.com/questions/758 ... is-virtual
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»