Хорошо, представьте, что у меня есть базовый класс BaseClass
, а также дочерний класс ChildClassA
, производный от BaseClass
.
Что происходит, когда я делаю это?
BaseClass b = new ChildClassA;
То, что я представляю, происходит так:
- ChildClassA создается и сохраняется в куче как
ChildClassA
тип !
- Переменная
b
получает ссылку на ChildClassA
- Существует неявное преобразование из ChildClassA в BaseClass
- Но объект все еще хранится в куче как ChildClassA
Причина, по которой я спрашиваю, состоит в том, что, как я понимаю, когда объект объявляется и сохраняется в куче, это то, чем он является ВСЕГДА. Преобразование просто указывает CLR на обрабатывать , как будто это другой тип, но он действительно всегда остается исходным типом, а знает, это все еще оригинальный тип.
Я прав? Что-то, чего мне здесь не хватает?