作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个基类和一个子类。基类包含一些变量,子类包含一些变量。
我需要做的是,当我创建子类的对象时,我在其构造函数中传递基类对象,这将设置子对象的基类变量。
代码:
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 的建议。
关于c# - 分配子对象的基础对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17208097/
我是一名优秀的程序员,十分优秀!