具有只读 getter 的属性有什么好处?

nds*_*svw 13 .net c# struct properties readonly

我已经多次看到readonly (通常是针对成员,但也在 readonly 结构的上下文中)。

但我第一次看到的是属性的只读组合:

private double _x;
public double X
{
    readonly get => _x;
    set => _x = value;
}
Run Code Online (Sandbox Code Playgroud)

但是这是什么意思?指定 getter readonly 到底有什么限制?

Kon*_*lph 20

readonly get语法是C# 8 的新增内容。这意味着 getter 不能修改实例成员。

常规 getter可能会修改实例:

public double X
{
    get { _x = 1; return _x; }
}
Run Code Online (Sandbox Code Playgroud)

该代码完全有效;更有用的是,getter 可以更新缓存的值。readonly get访问器不能这样做,编译器将强制执行此不变量。

  • 只读文档中提到了这一点,如我的答案中所链接,但您必须阅读字里行间。 (2认同)