public class a{
public string x1 {get;set;}
public string x2 {get;set;}
public string x3 {get;set;}
}
public class b:a{
}
显然 var foo = (b)new a();
会在运行时抛出一个转换错误。
我能想到的唯一一种为已实例化和填充的 a
分配所有属性的方法是手动将每个属性复制到 b
的新实例中。
这是正确的吗?
最佳答案
这种类型的转换是错误的,因为你不能将 parent 转换为他们的 child 。
a
的类型不知道 b
类型的元信息。因此,您需要提供显式转换运算符来执行此类操作,但在这种情况下,您必须移除继承。
其他选项是定义一些接口(interface),例如在其他问题中。
更多信息:
http://msdn.microsoft.com/en-us/library/ms173105.aspx
http://msdn.microsoft.com/en-us/library/85w54y0a.aspx
关于c# - 向上类型转换-c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6343301/