分配子对象的基础对象

fhn*_*eer 3 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;
}
Run Code Online (Sandbox Code Playgroud)

那么我在这里尝试做什么是可能的.怎么样?当我尝试这段代码时,我遇到了这个错误.

Use of keyword 'base' is not valid in this context
Run Code Online (Sandbox Code Playgroud)

hai*_*770 5

你必须意识到它ChildClass包含 BaseClass而是从它继承.

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

这也是为什么你不能'设置' BaseClass你的ChildClass,它不包含一个.

然而,有一些有用的模式可以实现您正在尝试的功能,例如:

public class BaseClass
{
    protected BaseClass() {}

    protected BaseClass(BaseClass initData)
    {
        this.BaseInteger = initData.BaseInteger;
        this.BaseDouble = initData.BaseDouble;
        this.BaseBool = initData.BaseBool;
    }

    public int BaseInteger;
    public double BaseDouble;
    public bool BaseBool;
}

public class ChildClass : BaseClass
{
    public ChildClass() {}

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

    public int ChildInteger;
    public string ChildString;
}
Run Code Online (Sandbox Code Playgroud)

感谢@svick的建议.