C#:将超类转换为子类
我使用了一个类(超类)。出于自己的目的,我设计了一个子类,它为我添加了传统信息C#:将超类转换为子类,c#,class,type-conversion,C#,Class,Type Conversion,我使用了一个类(超类)。出于自己的目的,我设计了一个子类,它为我添加了传统信息 class SuperClass{ } class SubClass: SuperClass{ } 现在我的问题是,在运行时,我想将超类的实例转换为子类的实例。对它执行一些操作,然后返回到超类。所以我的问题是,如何才能将SueprClass的实例转换成SubClass的实例 SubClass newItem = superClass as SubClass; 如果您正在使用的实例已初始化为超类,则无法神奇地将其
class SuperClass{
}
class SubClass: SuperClass{
}
现在我的问题是,在运行时,我想将超类的实例转换为子类的实例。对它执行一些操作,然后返回到超类。所以我的问题是,如何才能将SueprClass的实例转换成SubClass的实例
SubClass newItem = superClass as SubClass;
如果您正在使用的实例已初始化为
超类
,则无法神奇地将其转换为子类
的实例,从而将整个类型系统抛出窗口
但是,您可以添加一种将超类
转换为子类
的方法,但您必须为此编写代码
一种方法是向子类
添加构造函数,该构造函数接受超类
的一个实例以及子类
需要的任何附加信息(如果它不需要附加信息,也许您最好使用扩展方法而不是继承)。另一种方法是编写转换运算符。到目前为止您尝试了什么?JGFI。。。这个问题在这里已经被问过很多次了。在代码示例中,is
superClass
asuperClass superClass=new superClass()
或a超类SuperClass=新的子类()代码>?如果您从未使用过新的子类(…)
您就不能这样做(当然,没有操作符);您可以1:将其更改为SubClass SubClass=newsubclass()代码>(一切都应该继续工作),或者2:在子类中创建一个构造函数,该构造函数接受一个超类,并执行子类SubClass=新的子类(超类)代码>如果您需要保留已存储在超类中的数据,并且无法说出类似subClass.base=superClass的内容;我的意思是subClass.base应该与超级类完全相同,但不确定您在这里问什么。在子类中是否有名为base
的属性?否,在c#base访问基类中,它与在cpp super访问基类中相同superclass@Dominick我理解c#,我知道base
关键字是什么,我很难理解你的问题。您在问题的注释中写道,您正在使用超类
构造函数初始化超类
的实例-因此它是超类
的实例,而不是子类
的实例。为了能够将其转换为子类
,您必须编写这样做的代码,或者使用子类
构造函数简单地初始化它:var superClass=new SubClass()代码>使用超类的任何代码
仍应能够使用此实例。。。