c# - 向上类型转换-c#

标签 c# .net casting

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/

相关文章:

c# - 计算三角多边形网格中的孔

c# - 验证十进制数的正则表达式

swift - swift 中具有不同输入的闭包字典

c++ - 单精度和 double 类型转换给出不同的答案

c# - iTextSharp PdfTextExtractor GetTextFromPage 抛出 NullReferenceException

c# - 清净属性(property)申报

C# 有没有办法用文本框搜索所有 ListView 项目?

c# - 路径为空的 Uri

.net - IValueConverter - 在 Convert 方法中获取源对象

C++ 类型转换与隐式构造函数