变量只读

时间:2014-12-02 20:03:57

标签: c# oop readonly access-modifiers

我在更改不同类的变量时遇到问题。即使我使用了访问修饰符(get和set),编译器仍然将其视为只读,并且我无法在另一个类中更改它。

private float speed;

public float Speed
{
    get {return speed;}
    set {speed = value;}
}

我不确定这是否重要,但这个变量来自我的主要抽象类,我在其他类中使用它。这里发生的是,我在一个类(Player.cs)中为这个变量赋值,并且我试图通过初始化它的对象(Physics.cs)来改变它在另一个类中。它们都继承自那个主要的抽象类。

2 个答案:

答案 0 :(得分:2)

如果你只设置speed一次,只需使用一个只读变量并在构造函数中设置它:

public class Physics
{
    private readonly float speed;

    public Physics()
    {
        this.speed = 5;
    }
}

您可以只设置一次readonly变量。

如果你确实需要在对象的生命周期内更改speed,那么为了简单起见,只需使用自动属性:

public float Speed {get; set;}

答案 1 :(得分:1)

如果您尝试从子类访问速度,请确保它在基类中定义为受保护(非私有)。私人真的是私人的。在定义它的类之外的任何东西都不能访问它。受保护允许继承的类访问它。

(如果我理解你的问题,那就是。我很困惑,但是......如果你试图直接访问速度变量,那为什么要有公共属性?)