从基类获取/设置私有变量
本文关键字:变量 设置 基类 获取 | 更新日期: 2023-09-27 18:34:04
Class GameObject
{
private Vector2 position
public Vector2 Position
{
get { return position; }
set { position = value; }
}
}
上面是我的基类,我想更改我继承的类中的位置值,但我似乎无法访问该变量。下面是我继承的类
Class Enemy : GameObject
{
public void MoveRight()
{
//I want to change the value of position here but cannot access the variable
position.X += 1.0f;
}
}
为什么需要访问变量? 只需更新属性值:
class Enemy : GameObject
{
public void MoveRight()
{
//I want to change the value of position here but cannot access the variable
this.Position.X += 1.0f;
}
}
解决方案 1:将私有成员提升为受保护。
Class GameObject
{
protected Vector2 position
public Vector2 Position
{
get { return position; }
set { position = value; }
}
}
受保护的成员类似于私有成员,也可以通过派生类型访问。
解决方案 2:按照 Mike 的建议通过属性访问成员。
解决方案 3:使用反射。(不是你需要的,但仅供参考。永远不要用霰弹枪杀死苍蝇)
您无法访问"位置",因为您将其声明为 PRIVATE。它只能在声明它的类中访问。
如果要使其可供派生类访问,请更改为 PROTECTED。
这样,它在类之外将不可见,但派生类将能够看到并使用它。
编辑
但是,如果你在"Position"成员集/get中什么都不做,那么你就可以使用auto属性:
public Vector2 Position { get; set; }
忘记领域。在任何情况下,不要忘记"位置"或"位置"必须在使用前初始化。
正在寻找类似的,这应该是答案
例如,在基本(parrent)类类型中:
public bool Connected { get; protected set; } = false;
受保护 允许派生类设置值。
虽然它们在派生(子)类之外不可写,但只能读取。
在子类中,您可以设置它们。