加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 分配子对象的基础对象

发布时间:2020-12-16 01:55:30 所属栏目:百科 来源:网络整理
导读:我有一个基类和一个子类.基类包含一些变量,子包含一些变量. 我需要做的是,当我创建子类的对象时,我在其构造函数中传递基类对象,该构造函数将设置子对象的基类变量. 码: public class BaseClass{ public int BaseInteger; public double BaseDouble; public
我有一个基类和一个子类.基类包含一些变量,子包含一些变量.

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

码:

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

解决方法

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

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

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

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

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;
}

感谢@svick的建议.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读