这里是一段简单的控制台应用程序代码,它返回的结果我不完全理解。
请尝试思考它在控制台输出0、1还是2:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main()
{
int i = 0;
i += Increment(ref i);
Console.WriteLine(i);
Console.ReadLine();
}
static private int Increment(ref int i)
{
return i++;
}
}
}
答案是0。
我不明白的是为什么后置递增运算符i++在
Increment
方法中执行时(该方法在ref
上执行而不是在传递变量的副本上执行),确实会增加变量,但稍后却被忽略了。我的意思是在这个视频中: 有人能解释一下这个例子,以及为什么在调试期间我看到的值增加到1,但后来又回到了0?
i
,它是一个ref
。虽然我知道在“正常”情况下为什么会返回值 0,但我不知道为什么它会从 1 上升然后再下降到 0。 - Irwene