Задать вопрос
robinzonejob
@robinzonejob
разработчик .NET

Где же все-таки находится ссылка на таблицу методов в .NET?

Насколько я понял Рихтера и то, что написано в его CLR via C# - каждый экземпляр типа содержит в себе ссылку на т.н. объект-тип, который, в свою очередь, уже содержит свою собственную таблицу методов. И уже в этой таблице методов содержатся ссылки на конкретные реализации методов в IL. Если я не прав в этой части, поправьте меня, пожалуйста.
Однако, в книге Оптимизация приложений на платформе .NET с использованием языка C# сказано, что экземпляр сам содержит в себе ссылку на таблицу методов. В частности, вот иллюстрация из этой книги:

6093e829a09bf608791000.png

Так все же, где находится ссылка на таблицу методов, в экземпляре или в объекте-типе, на который ссылается экземпляр?
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 2
@none7
Когда не знаешь чему верить, то верь отладчику.
Там так:
static void test(object o) {
    Type t = o->type; // offset 0
    IntPtr *vt = t->vtable_of_type; // offset 0x28 на x86
    vt[3](); // call
}
Ответ написан
Комментировать
В начале объекта есть указатель на vtable. В vtable есть указатель на сами методы.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы