给定一个类层次结构与基础类B
和子类S
:在C#中,我是否必须执行显式上传?
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;
是这句话很正确,或作为问题状态我是否必须执行显式预测?
如果您是有意向上转型对象在你的代码库中的任何地方,我想你会打破Liskov替代原则的定义。 – MarioDS