为什么我不能引用 return 静态只读字段?

Why can't I ref return a static readonly field?

以下代码无法使用 C# 7.0 / Visual Studio 2017.2 编译:

class C {
    private static readonly int s = 5;
    public static ref int Data => ref s;
}

是否有禁止引用静态只读字段的技术原因,或者这只是一个缺失的功能?

错误消息说:

CS8162: A static readonly field cannot returned by reference.

因为它是 readonly

ref 的要点是允许更改引用的变量,这将违反 readonly

您还不能 return 对只读字段的引用,因为引用 return 是可变的。但是,ref readonly 功能计划用于 C# 的未来版本 (currently pencilled in for C# 7.2, but that may change)。

此功能可能会解决 return 对只读字段的引用的能力,以及允许 ref 参数也被标记为只读,以保证引用的值获胜' 被方法修改。

现在可以在 C# 7.2 中实现。

class C {
    private static readonly int s = 5;
    public static ref readonly int Data => ref s;
}