c# - C#:将超类转换为子类
问题描述
我有一个使用的类(SuperClass)。出于自己的目的,我设计了一个子类,它为我添加了额外的信息。
class SuperClass{
}
class SubClass: SuperClass{
}
现在我的问题是,在运行时我想将 Superclass 的实例转换为 SubClass 的实例。对其进行一些操作,然后返回 SuperClass。所以我的问题是,如何将 SueprClass 的实例实际转换为 SubClass 的实例?
SubClass newItem = superClass as SubClass;
解决方案
如果您正在使用的实例被初始化为SuperClass
,您不能神奇地将其转换为 a 的实例SubClass
- 这会将整个类型系统抛到窗外。
但是,您可以添加一种转换SuperClass
为的方法SubClass
,但您必须为此编写代码。
一种方法是将构造函数添加到SubClass
接受 的实例以及所需的SuperClass
任何其他信息SubClass
(如果它不需要其他信息,也许您最好使用扩展方法而不是继承)。
另一种方法是编写显式转换运算符。
推荐阅读
- python - 计算嵌套列表中特定元素的深度
- node.js - 如何在 Jest 中查看堆栈跟踪/错误原因?
- python-3.6 - 无论我输入什么罗马数字,此代码都会产生“0”作为值。为什么会这样?
- laravel - 如何安装低版本的laravel?
- python - 无法安装 python-pip 模块
- bash - 如何将 perl 命令中的变量用于 bash 脚本
- javascript - 如何选择html元素的兄弟节点?
- xml - NSIS xml 使用转义字符读写
- python-3.x - 如何列出python程序所需的所有包?
- javascript - 将 html 作为输入传递给 Angular 组件