在.NET中初始化基类

如果需要用现有的对象初始化对象的基础,该如何操作?比如,在这种情况下。

public class A
{
    public string field1;
    public string field2;
}

public class B : A
{
    public string field3;
    public void Assign(A source)
    {
        this.base = source; // <-- will not work, what can I do here?
    }
}

Assign()方法显然可以逐个字段赋值给基类 但有没有更好的解决方案?既然类B继承自A,那么一定有办法可以直接将A赋值给B.base

在C++中,这将是一件微不足道的事情,但我似乎无法理解如何在.NET中做到这一点。

解决方案:

不幸的是 base 是readonly。

[编辑]好吧,也许不是那么不幸。 基类和子类之间的关系是 IS-AHAS-A. 通过允许子类改变基类的实例,你允许子类改变它自己的引用,因为它是 IS-A 基类。 如果你真的需要这个功能,那么我建议你改变你的继承模型来反映你真正想要做的事情。

像这样。

public class A
{
    public string field1;
    public string field2;
}

public class B
{
    public string field3;
    public A a;

    public void Assign(A source)
    {
        this.a = source;
    }
}

似乎更合适,意义和功能也更清晰。

给TA打赏
共{{data.count}}人
人已打赏
未分类

在std::bind中引用是无用的?

2022-9-8 7:53:39

未分类

Rails 嵌套强参数,如何使用?

2022-9-8 7:53:41

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索