Мне немного не ясен механизм работы виртуальных методов в C#. Знаю, что для каждого класса, имеющего виртуальные методы, есть своя таблица виртуальных методов VMT. Знаю, что каждый экземпляр таких классов содержит ссылку на соответствующую VMT. Но не могу полностью понять алгоритм вызова виртуального метода.
Первый шаг - в момент вызова метода "среда исполнения" (условно назовем) берет у целевого объекта адрес VMT, по нему обращается к таблице. Далее наступает "магия", и каким-то образом определяется смещение в таблице виртуальных методов, по которому лежит адрес нужного нам метода, и обращаясь по извлеченному из VMT адресу метода "среда исполнения" извлекает нужную реализацию.
Вопрос: как после первого шага определяется смещение, по которому лежит адрес реализации метода, который мы вызвали?
Продвижение своими сайтами как стратегия роста и независимости