Это печатание типа «крякающий как утка».Подобный тип ввода, который делает System.Int32, тип значения, производный от ValueType, ссылочным типом.Не имеет смысла, нелегально в C #, но на самом деле ведет себя так.Реальная реализация метода Invoke делегата скрыта в CLR и представляет собой статическую функцию, написанную на C ++.
Но, конечно, аннотирование его как виртуального имеет некоторый смысл, потому что ведет себя как виртуальныйметод.Реальный код, который выполняется, не является фиксированным, как это происходит с невиртуальным методом класса.Еще сложнее понять, какой должна быть правильная модель для делегата, привязанного к статическому методу.Виртуальный метод, который статичен?
Это просто виртуальная утка.
Чтение указателей функций, используемых в C, может помочь вам получить лучшую ментальную модель для делегатов.Делегат - это указатель на функцию с включенными колоколами, он также может хранить целевой объект.В C # отсутствует синтаксис, чтобы выразить это по-другому.