分配子对象的基础对象

时间:2013-06-20 07:51:23

标签: c# inheritance

我有一个基类和一个子类。基类包含一些变量,子包含一些变量。

我需要做的是,当我创建子类的对象时,我在其构造函数中传递基类对象,该构造函数将设置子对象的基类变量。

代码:

public class BaseClass
{
    public int BaseInteger;
    public double BaseDouble;
    public bool BaseBool;
}

public class ChildClass : BaseClass
{
    public ChildClass(BaseClass baseClass)
    {
        this.base = baseClass;     // I am trying to do this.
    }

    public int ChildInteger;
    public string ChildString;
}

所以我可以在这里尝试做什么。怎么样?当我尝试这段代码时,我收到了这个错误。

Use of keyword 'base' is not valid in this context

3 个答案:

答案 0 :(得分:5)

您必须意识到ChildClass不会包含 BaseClass,而是继承

这就是为什么您可以使用this关键字(例如this.BaseInteger)访问基类中定义的数据和方法。

这就是为什么你不能'设置'BaseClass的{​​{1}},它不包含一个。{/ p>

然而,有一些有用的模式可以实现你想要做的事情,例如:

ChildClass

感谢@svick的建议。

答案 1 :(得分:1)

public class BaseClass
{
    public int BaseInteger;
    public double BaseDouble;
    public bool BaseBool;
}

public class ChildClass : BaseClass
{
    public ChildClass(BaseClass baseClass)
    {
        this.BaseInteger = baseClass.BaseInteger;
        this.BaseDouble = baseClass.BaseDouble;
        this.BaseBool = baseClass.BaseBool;
    }

    public int ChildInteger;
    public string ChildString;
}

答案 2 :(得分:1)

我认为最优雅的方法是在BaseClass类中创建第二个构造函数,该构造函数采用BaseClass实例来初始化其字段。然后,您只需在ChildClass类中调用此基础构造函数:

public class BaseClass
{
    public int BaseInteger;
    public double BaseDouble;
    public bool BaseBool;

    public BaseClass()
    {
    }

    public BaseClass(BaseClass baseClass)
    {
        this.BaseInteger = baseClass.BaseInteger;
        this.BaseDouble = baseClass.BaseDouble;
        this.BaseBool = baseClass.BaseBool;
    }
}

public class ChildClass : BaseClass
{
    public int ChildInteger;
    public string ChildString;

    public ChildClass(BaseClass baseClass) : base(baseClass)
    {
    }

}