给定具有基类B
和子类的类层次结构S
:
class B { }
class S : B { }
我可以通过隐式转换将 a 分配S
给a:B
B b = new S();
如果我想将其降级为 aS
我必须明确地这样做:
B b = new S();
...
S s = (S)b;
现在,我的理解是我们可以保证从S
to始终存在赋值兼容性B
,因此我们永远不必以以下方式执行显式向上转换:
S s = new S();
B b = (B)s; // or
B b2 = s as B;
这个断言是否正确,或者正如问题所述,我是否必须执行明确的向上转型?