CS0106编译错误:readonly属性和getter

Dad*_*dyM 4 c# compiler-errors language-design

它可能看起来很愚蠢,但我想知道为什么下面的代码会产生CS0106编译时错误:

error CS0106: The modifier 'readonly' is not valid for this item

代码:

class MyClass
{
private readonly int _value
{
  get
  {
    if (_value < 0)
      return -1 * _value;
    return _value;
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的理解中,我在内部没有任何错误,get因为我只读了价值.我同意readonly从逻辑的角度来看,对属性获取者的计算看起来很尴尬.

内部PS代码get没有实际意义 - 它只是一个"读取内容的东西_value"

UPDATE

总之,最初我认为使用readonly关键字创建只读属性是相当逻辑的.我错过了readonlyMicrosoft文档提供的有关属性的主要内容:

readonly关键字是一个可以在字段上使用的修饰符.

Bab*_*fas 6

没有讽刺......你得到一个编译错误,因为它不是语言语法的一部分.

首先,由于只有a的性质get,那么你已经把这个属性"只读"了.

其次,你需要考虑的财产围绕两种方法的语法糖 int getValue()void setValue (int).将方法设置为"只读"是否有意义?

第三,将属性设置为只读是没有意义的,因为作为构造的属性未映射到内存中的任何内容.请参阅前一点,了解它是如何编写(最多)两种方法的好方法.