我在更改不同类的变量时遇到问题。即使我使用了访问修饰符(get和set),编译器仍然将其视为只读,并且我无法在另一个类中更改它。
private float speed;
public float Speed
{
get {return speed;}
set {speed = value;}
}
我不确定这是否重要,但这个变量来自我的主要抽象类,我在其他类中使用它。这里发生的是,我在一个类(Player.cs)中为这个变量赋值,并且我试图通过初始化它的对象(Physics.cs)来改变它在另一个类中。它们都继承自那个主要的抽象类。
答案 0 :(得分:2)
如果你只设置speed
一次,只需使用一个只读变量并在构造函数中设置它:
public class Physics
{
private readonly float speed;
public Physics()
{
this.speed = 5;
}
}
您可以只设置一次readonly
变量。
如果你确实需要在对象的生命周期内更改speed
,那么为了简单起见,只需使用自动属性:
public float Speed {get; set;}
答案 1 :(得分:1)
如果您尝试从子类访问速度,请确保它在基类中定义为受保护(非私有)。私人真的是私人的。在定义它的类之外的任何东西都不能访问它。受保护允许继承的类访问它。
(如果我理解你的问题,那就是。我很困惑,但是......如果你试图直接访问速度变量,那为什么要有公共属性?)