This question already has answers here:
Post-increment within a self-assignment
(6个答案)
3年前关闭。
这是一个简单的控制台应用程序代码,它返回的结果我并不完全理解。
尝试考虑是否在控制台中输出0、1或2:
答案是0。
我不明白的是为什么在
我的意思是在这段视频中:
有人可以解释这个例子吗,为什么在调试过程中我看到该值增加到1,但是又回到0?
赋值右侧的表达式是从左到右求值的,因此下一步是
在分配之前,
(6个答案)
3年前关闭。
这是一个简单的控制台应用程序代码,它返回的结果我并不完全理解。
尝试考虑是否在控制台中输出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
方法中,post post ref
会增加变量,但是稍后会被忽略。我的意思是在这段视频中:
有人可以解释这个例子吗,为什么在调试过程中我看到该值增加到1,但是又回到0?
最佳答案
i += Increment(ref i);
等效于
i = i + Increment(ref i);
赋值右侧的表达式是从左到右求值的,因此下一步是
i = 0 + Increment(ref i);
return i++
返回i
的当前值(为0),然后递增i
i = 0 + 0;
在分配之前,
i
的值为1(在Increment
方法中增加),但是分配再次将其设为0。关于c# - 有趣的采访练习结果: return,帖子增量和裁判行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43539718/
10-11 01:39