以下代码无法使用C# 7.0
/Visual Studio 2017.2进行编译:
class C {
private static readonly int s = 5;
public static ref int Data => ref s;
}
是否有技术原因不允许对静态只读字段进行引用,或者这只是缺少的功能?
错误消息显示:
CS8162:无法通过引用返回静态只读字段。
因为它是readonly
.
ref
的要点是允许更改引用的变量,这将违反readonly
。
这在 C# 7.2 中是可能的。
class C {
private static readonly int s = 5;
public static ref readonly int Data => ref s;
}
您还不能返回对只读字段的引用,因为 ref 返回是可变的。但是,ref readonly
功能计划用于 C# 的未来版本(目前为 C# 7.2 编写,但可能会更改)。
此功能可能会解决返回对只读字段的引用的能力,以及允许将ref
参数标记为只读的问题,以保证该方法不会修改引用的值。