为什么我不能引用 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;
}
以下代码无法使用 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;
}