c# - 将超类转换为子类
问题描述
我有一个看起来像这样的课程:
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;
推荐阅读
- mysql - 将magento 2.1.13升级到2.3.3后出现错误:SQLSTATE [HY000]:一般错误:1823无法将外键约束添加到系统表
- sql - Postgres:想要在用户存在时选择数据,否则插入用户
- php - session_regenerate_id():无法重新生成会话 ID - 标头已发送
- java - DocumentBuilderFactoryImpl 在 AIX 中找不到,但在 Windows 中有效
- marklogic - marklogic xdmp:http-post 选项参数问题
- django - 从Django中的表中获取字段
- react-native - 任务:react-native-screens:compileDebugJavaWithJavac FAILED
- python - 我如何找到这个矩阵的行和列长度?(Python)
- python - 如何创建可选的元组返回或解包
- sql-server - 如何使用 Visual Studio 以编程方式创建 OLAP 多维数据集