Учитывая иерархию классов с базовым классом B
и подклассом S
:
class B { }
class S : B { }
Я могу присвоить S
B
с неявным преобразованием:
B b = new S();
Если бы я хотел понизить это обратно до S
, мне пришлось бы сделать это явно:
B b = new S();
...
S s = (S)b;
Теперь, насколько я понимаю, мы можем гарантировать, что совместимость присваивания всегда будет идти от S
к B
, поэтому нам никогда не придется выполнять явное преобразование вверх следующим образом:
S s = new S();
B b = (B)s; // or
B b2 = s as B;
Верно ли это утверждение, или, как говорится в вопросе, нужно ли мне когда-либо выполнять явное повышение?