readonly在getter之前是什么意思,同时它也有setter



我错误地按下了Point类型的F12,我看到了这样的东西:

public int X
{
readonly get => x;
set => x = value;
}

我不明白,我知道X不是只读的,如果它是只读的,就不应该有setter

readonly get是什么意思?

谁能告诉我上面的getter和setter是什么意思?更新:从古鲁答案的链接。它说:

Readonly可以应用于一些自动实现的属性,但它不会产生有意义的效果。无论readonly关键字是否存在,编译器都会将所有自动实现的getter视为只读的。

如果它没有效果,为什么要把它放在那里。

自c# 8以来,您可以将struct的成员标记为readonly,以表示它们不会改变它的状态。这用于防止在structin修饰符一起使用的情况下发生隐藏复制:

这通常没有太大的影响,除了in参数的情况。对于非只读结构体的in形参,编译器将为每个实例成员调用创建一个形参的副本,因为它不能保证调用不会修改内部状态。

例如在System.Drawing.Pointstruct中使用的

请参阅只读实例成员规范。

最新更新