我想写一个方法返回ref ref ref readonly as described:"该功能允许成员通过引用返回变量,而不会将它们暴露给突变。&#34 ;
不幸的是,我的代码会编译并执行此类突变。如何确保无法修改?这是有充分理由的。我期待编译器错误。我还应该做些什么吗? 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();
}
}
答案 0 :(得分:2)
根据评论。这是解决方案。我得到了我期望的编译器错误:“严重性代码描述项目文件行抑制状态 错误CS8329无法使用方法'TryClass.Multiply(int,int)'作为ref或out值,因为它是一个只读变量“
internal class Program
{
private static void Main(string[] args)
{
int x = 10;
int y = 20;
ref readonly var rez = ref TryClass.Multiply(x, y);
rez++;
Console.WriteLine(rez);
TryClass.DoAfter();
Console.ReadLine();
}
}