我有一个看起来像这样的类:
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();
}
}
它仍然无法编译...这是我没想到的。
为什么我无法将父类(super class)转换为子类?我该如何解决这个问题?
最佳答案
Why am I unable to cast
您可以进行转换,但随后将其分配回 MySuperClass someSubClass
,这会隐式地将其转换回 MySuperClass
。
使用
var castedSomeSubClass = (MySubClass)someSubClass;
或
MySubClass castedSomeSubClass = (MySubClass)someSubClass;
关于c# - 将父类(super class)转换为子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55921443/