【发布时间】:2025-12-08 22:25:01
【问题描述】:
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 的新实例中。
这是正确的吗?
【问题讨论】:
-
你的问题是关于downcasting,你的问题标题是关于upcasting。 – 哪个是正确的?
-
@Konrad Rudolph:将
a转换为b是一种“向上转换” -
@Konrad 啊,我认为这是“向上转换”,因为我正在将“a”转换为“更高”类。
-
@leppie 不。至少不是按照通用术语。见Wikipedia: Downcasting 和Java glossary: upcasting。
-
@Konrad Rudolph:好的。对我来说,向下转换意味着转换为限制较少的类型。