Как виртуальные методы работают в C#?

Я знаю в C++ существуют vpointer и vtable. Таблица виртуальной функции является списком указателей метода на виртуальные методы в классе. Каждый экземпляр класса имеет указатель на таблицу, которая используется, когда мы называем виртуальный метод от экземпляра.

Я хочу знать, как это реализовало в C#. Поскольку я знаю, что понятие виртуальных таблиц является тем же. Но что относительно vpointer GetType (), используется вместо этого.

Я ценил бы как можно больше детали.Спасибо.

7
задан Adam Crossland 22 July 2010 в 16:24
поделиться

2 ответа

Таблицы Vtables - это один из возможных подходов в C ++, они не требуются стандартом C ++. Подход, который использует .NET, явно соответствует опубликованным стандартам для CLI и C #, но детали реализации не указаны (и потенциально могут измениться).

Вы можете вывести некоторые подробности из того, как работают интерфейсы, переопределенные члены и «новые» члены.

Почему вы хотите это знать? Если у вас есть конкретная проблема, то ее указание позволит другим решить ее напрямую.

7
ответ дан 7 December 2019 в 05:16
поделиться

Взгляните на их документацию в спецификации C # : 10.5.3 Виртуальные методы (хотя это спецификация , а не реализация).

1
ответ дан 7 December 2019 в 05:16
поделиться