我有一个类看起来像:
public class MySuperClass
{
public void PrintValue()
{
print("SUPER Class");
}
}
然后我有另一个类看起来像:
public class MySubClass : MySuperClass
{
public void PrintSubValue()
{
print("SUB Class");
}
}
然后,我有一个情况,我有一个第三类看起来像:
public class MyOtherClass
{
public MyOtherClass(MySuperClass someSubClass)
{
someSubClass.PrintSubValue();
}
}
它不会编译......正如预期的那样。
现在如果我改变MyOtherClass
看起来像:
public class MyOtherClass
{
public MyOtherClass(MySuperClass someSubClass)
{
someSubClass = (MySubClass) someSubClass;
someSubClass.PrintSubValue();
}
}
它仍然无法编译......这个我没想到。
为什么我无法将超级类投射到子类?我该如何解决这个问题?
为什么我无法施放
你可以施放,但是然后你将它分配回MySuperClass someSubClass
,它隐含地将它转回MySuperClass
。
使用
var castedSomeSubClass = (MySubClass)someSubClass;
要么
MySubClass castedSomeSubClass = (MySubClass)someSubClass;