Мне немного не ясен механизм работы виртуальных методов в C#. Знаю, что для каждого класса, имеющего виртуальные методы, есть своя таблица виртуальных методов VMT. Знаю, что каждый экземпляр таких классов содержит ссылку на соответствующую VMT. Но не могу полностью понять алгоритм вызова виртуального метода.
Первый шаг - в момент вызова метода "среда исполнения" (условно назовем) берет у целевого объекта адрес VMT, по нему обращается к таблице. Далее наступает "магия", и каким-то образом определяется смещение в таблице виртуальных методов, по которому лежит адрес нужного нам метода, и обращаясь по извлеченному из VMT адресу метода "среда исполнения" извлекает нужную реализацию.
Вопрос: как после первого шага определяется смещение, по которому лежит адрес реализации метода, который мы вызвали?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
встретил такую конструкцию в кодяре: [In, Out] byte[] array Передается как параметрДайте пожалуйста четкое конкретно объяснение, зачем оно нужно,...
Есть два любых контролаОдин главный, второй дочерний
Допустим, есть List<SomeObject>, где SomeObject- это какой-то объект с десятком полей
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение