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关键字是一个可以在字段上使用的修饰符.
没有讽刺......你得到一个编译错误,因为它不是语言语法的一部分.
首先,由于只有a的性质get,那么你已经把这个属性"只读"了.
其次,你需要考虑的财产围绕两种方法的语法糖
int getValue()和void setValue (int).将方法设置为"只读"是否有意义?
第三,将属性设置为只读是没有意义的,因为作为构造的属性未映射到内存中的任何内容.请参阅前一点,了解它是如何编写(最多)两种方法的好方法.
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |