gpt4 book ai didi

c# - CS0106 编译错误 : readonly property and getter

转载 作者:太空狗 更新时间:2023-10-30 00:39:00 33 4
gpt4 key购买 nike

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

错误 CS0106:修饰符“readonly”对此项目无效

代码:

class MyClass
{
private readonly int _value
{
get
{
if (_value < 0)
return -1 * _value;
return _value;
}
}

根据我的理解,我在 get 中没有做错任何事,因为我只是读取值。我同意 readonly 的属性 getter 的计算从逻辑的角度来看看起来很尴尬。

附言get 中的代码没有实际意义 - 它只是“读取 _value 的东西”

更新

简而言之,最初我认为使用 readonly 关键字来创建只读属性是很合乎逻辑的。我错过了 Microsoft 文档中有关 readonly 属性的主要内容:

The readonly keyword is a modifier that you can use on fields.

最佳答案

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

首先,根据只有 get 的性质,您已经将属性设置为“只读”。

其次,您需要将属性视为围绕两个方法的语法糖int getValue()void setValue (int)。将方法设置为“只读”是否有意义?

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

关于c# - CS0106 编译错误 : readonly property and getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487048/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com