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;
}
}
答案 0 :(得分:1)
为什么需要访问变量?只需更新属性值:
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 :(得分:0)
您无法访问"位置"因为您将其声明为PRIVATE。它只能在声明它的类中访问。
如果要使派生类可以访问,请更改为PROTECTED。
这样它在类外部不可见,但派生类将能够看到它并使用它。
修改强>
但如果你在"位置"成员集/获取,比您可以使用自动属性:
public Vector2 Position { get; set; }
忘了这个领域。 无论如何,不要忘记"位置"或者"位置"必须在使用前初始化。
答案 2 :(得分:0)
解决方案1:将私人成员提升为受保护。
Class GameObject
{
protected Vector2 position
public Vector2 Position
{
get { return position; }
set { position = value; }
}
}
受保护的成员就像私有成员一样,也可以通过派生类型访问。
解决方案2:通过Mike建议的属性访问该成员。
解决方案3:使用reflection.(不是你需要的,但是fyi。永远不要用霰弹枪杀死苍蝇)
答案 3 :(得分:0)
寻找类似的,这应该是答案
在您的Base(parrent)类类型中,例如:
public bool Connected { get; protected set; } = false;
protected允许派生类设置值 虽然它们在派生(子)类之外不可写但只能读取 在子类中,您可以设置它们。