Информация об изменениях

Сообщение Re: А как реализуется наследование в яп? от 21.08.2015 9:48

Изменено 21.08.2015 9:56 Sinix

Здравствуйте, -n1l-, Вы писали:

N>Меня тут озадачили на одном собеседовании вопросом, как собственно реализуется наследование в c#.


Тут вопрос надо уточнить. Потому что с точки зрения шарпа, с точки зрения il-метаданных, с точки зрения рантайма и с точки зрения бинарного кода ответы будут разные.

В максимально упрощённом виде всё стандартно: в заголовке объекта указатель на type info (ок, на method table на самом деле, но кто это помнит?). В method table хранятся все методы, определённые в самом классе и в его предках.
Дальше всё несложно (*под несложно — нюансов на пару статей, но снова, кто всё это помнит? ).
Re: А как реализуется наследование в яп?
Здравствуйте, -n1l-, Вы писали:

N>Меня тут озадачили на одном собеседовании вопросом, как собственно реализуется наследование в c#.


Тут вопрос надо уточнить. Потому что с точки зрения шарпа, с точки зрения il-метаданных, с точки зрения рантайма и с точки зрения бинарного кода ответы будут разные.

В максимально упрощённом виде всё стандартно: в заголовке объекта указатель на type info (ок, на method table на самом деле, но кто это помнит?). В method table хранятся все методы, определённые в самом классе и в его предках.
Дальше всё несложно (*под несложно — нюансов на пару статей, но снова, кто всё это помнит? ).

UPD. Основные моменты для CLR 2.0 собраны вот тут. Статья не без косяков, но в качестве стартовой точки пойдёт.