readonly修饰符对此项无效

csw*_*abe 1 c#

当我尝试从类对象中检索值时,会弹出此错误.它是在get-only属性中实现readonly关键字之后显示的.到目前为止我所理解的是,实现"readonly"只会将class属性限制为get方法.我不太确定如何实现关键字,有些帮助吗?

这是当前的代码.

 class Counter
{
    private int _count;
    private string _name;

    public Counter(string name)
    {
        _name = name;
        _count = 0;
    }
    public void Increment()
    {
        _count++;
    }
    public void Reset()
    {
        _count = 0;
    }
    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            _name = value;
        }
    }
    public readonly int Value
    {
        get
        {
            return _count;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*fan 5

对于只读的属性,以下就足够了:

public int Value { get { return _count; }}
Run Code Online (Sandbox Code Playgroud)

readonly关键字,是使只读字段,只能在构造函数中设置.

示例:

class Age
{
    readonly int year;
    Age(int year)
    {
        this.year = year;
    }
    void ChangeYear()
    {
        //year = 1967; // Compile error if uncommented.
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,作为捷径你可以写:

public int Value { get; private set;}
Run Code Online (Sandbox Code Playgroud)

你现在拥有一个带有公共getter的属性和一个私有的setter,因此它只能在这个类的实例中设置(并通过邪恶的反射).