我有一个看起来像这样的课
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();
}
}
它仍然无法编译...这没想到。
为什么我无法将超级类强制转换为子类?我该如何解决这个问题?
答案 0 :(得分:4)
我为什么不能投射
您可以进行投射,但是您可以将其分配回MySuperClass someSubClass
,这会隐式地将其投射回MySuperClass
。
使用
var castedSomeSubClass = (MySubClass)someSubClass;
或
MySubClass castedSomeSubClass = (MySubClass)someSubClass;