B
是一个派生自A
的类。我需要从现有对象A
创建一个新对象B
。
我需要这个,因为在我的应用程序中,我使用了很多A
个实例,它们比B
(它包含大量参考数据)轻得多,否则我会耗尽内存
如果不在自定义方法中手动复制所有B
字段的值,如何将A
转换为A
?
答案 0 :(得分:2)
考虑使用合成(即您的B
包含私有A
作为成员数据)而不是继承。向B
添加一个方法以返回其A
,这样您就可以在B
的其余部分被垃圾收集时保留它。
答案 1 :(得分:0)
投下它:
var a = (A)b;
或
var a = b as A;
扩展另一个类的类总是可以转换为更原始的版本。请注意,虽然它仍然是B
的同一个实例,但您只需将其视为A
。如果您要创建B的克隆,那么您应该向B添加一个方法:
public class B : A
{
public A Clone()
{
var a = new A();
a.SomeProperty = this.SomeProperty;
...etc...
return a;
}
}