我错误地按下了Point
类型的F12,我看到了这样的东西:
public int X
{
readonly get => x;
set => x = value;
}
我不明白,我知道X
不是只读的,如果它是只读的,就不应该有setter
readonly get
是什么意思?
谁能告诉我上面的getter和setter是什么意思?更新:从古鲁答案的链接。它说:
Readonly可以应用于一些自动实现的属性,但它不会产生有意义的效果。无论readonly关键字是否存在,编译器都会将所有自动实现的getter视为只读的。
如果它没有效果,为什么要把它放在那里。
自c# 8以来,您可以将struct
的成员标记为readonly
,以表示它们不会改变它的状态。这用于防止在struct
与in
修饰符一起使用的情况下发生隐藏复制:
这通常没有太大的影响,除了
in
参数的情况。对于非只读结构体的in
形参,编译器将为每个实例成员调用创建一个形参的副本,因为它不能保证调用不会修改内部状态。
例如在System.Drawing.Point
struct中使用的
请参阅只读实例成员规范。