以下代码无法使用C# 7.0
/ Visual Studio 2017.2进行编译:
class C {
private static readonly int s = 5;
public static ref int Data => ref s;
}
是否存在禁止静态只读字段引用的技术原因,或者这只是一个缺失的功能?
错误消息显示:
CS8162:无法通过引用返回静态只读字段。
答案 0 :(得分:10)
因为它是readonly
。
ref
的要点是允许更改引用的变量,这会违反readonly
。
答案 1 :(得分:3)
你不能尚返回对只读字段的引用,因为ref返回是可变的。但是,ref readonly
功能计划用于未来版本的C#(currently pencilled in for C# 7.2, but that may change)。
此功能可能既解决了返回对只读字段的引用的能力,又允许ref
参数也被标记为只读,以保证引用的值不会被修改方法
答案 2 :(得分:2)
现在可以在C#7.2中使用。
class C {
private static readonly int s = 5;
public static ref readonly int Data => ref s;
}