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访问器不能这样做,编译器将强制执行此不变量。