为什么不能只读取属性

Str*_*los 6 c#

为什么C#中的属性不能只读?

当我尝试只读一个属性时,它表明:

修饰符'readonly'对此项无效

在这里问了Simmilar的问题: 为什么属性不能只读? 但问题是在5年前提出的,然后提供的答案是:因为他们没有想到它.5年后仍然如此吗?

编辑:代码示例:

public class GreetingClass
{
    public readonly string HelloText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Con*_*ole 20

属性可以只在C#中读取,实现只是不使用readonly关键字:

如果使用C#6(VS 2015),则可以使用以下行,该行允许在构造函数或成员定义中分配属性.

public int Property { get; }
Run Code Online (Sandbox Code Playgroud)

如果您使用较旧的C#/ Visual Studio版本,则可以编写类似这样的内容,并在构造函数或字段定义中指定字段:

private readonly int property;
public int Property { get { return this.property; }}
Run Code Online (Sandbox Code Playgroud)


Ova*_*tri 6

如果你想保持属性只读,你可以像这样定义它们的 getter:

public MyProperty { get; }
Run Code Online (Sandbox Code Playgroud)