首页 > 解决方案 > C#:将超类转换为子类

问题描述

我有一个使用的类(SuperClass)。出于自己的目的,我设计了一个子类,它为我添加了额外的信息。

class SuperClass{
}

class SubClass: SuperClass{
}

现在我的问题是,在运行时我想将 Superclass 的实例转换为 SubClass 的实例。对其进行一些操作,然后返回 SuperClass。所以我的问题是,如何将 SueprClass 的实例实际转换为 SubClass 的实例?

SubClass newItem = superClass as SubClass;

标签: c#classtype-conversion

解决方案


如果您正在使用的实例被初始化为SuperClass,您不能神奇地将其转换为 a 的实例SubClass- 这会将整个类型系统抛到窗外。

但是,您可以添加一种转换SuperClass为的方法SubClass,但您必须为此编写代码。

一种方法是将构造函数添加到SubClass接受 的实例以及所需的SuperClass任何其他信息SubClass(如果它不需要其他信息,也许您最好使用扩展方法而不是继承)。
另一种方法是编写显式转换运算符。


推荐阅读