1

B是一个派生自 的类A。我需要A从现有对象创建一个新对象B

我需要这个,因为在我的应用程序中,我使用了很多比(包含大量参考数据)A轻得多的实例,否则我会用完内存。B

如何在不手动复制自定义方法中的所有“字段”值的情况下转换B为?AA

4

2 回答 2

2

考虑使用组合(即您B包含一个私有A的成员数据)而不是继承。添加一个方法来B返回它,这样你就可以在其余的被垃圾收集A时保留它。B

于 2012-11-08T21:50:48.090 回答
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;
    }
}
于 2012-11-08T21:47:04.163 回答