【发布时间】:2018-05-23 15:05:59
【问题描述】:
我想写一个方法返回 ref a ref readonly as described: "该功能允许成员通过引用返回变量而不会将它们暴露于突变。"
不幸的是,我的代码编译并进行了这样的突变。如何确保无法修改?它是只读的,有充分的理由。我预计会出现编译器错误。我应该做些什么吗? 200被修改为201。我不想要那个。
internal class TryClass
{
private static int _result = 0;
public static ref readonly int Multiply(int a, int b)
{
_result = a * b;
return ref _result;
}
}
internal class Program
{
private static void Main(string[] args)
{
int x = 10;
int y = 20;
var rez = TryClass.Multiply(x, y);
rez++;
Console.WriteLine(rez);
Console.ReadLine();
}
}
【问题讨论】:
-
@MethodMan 我相信你没有完全阅读 c# 7.2 中新的
ref readonly语法 -
您忘记了
TryClass.Multiply之前的ref关键字(以及var rez之前的相应ref readonly),从而导致它返回一个副本,而不是只读引用:docs.microsoft.com/en-us/dotnet/csharp/…跨度>