這是一個簡單的控制檯應用程序代碼,它返回一個我完全不理解的結果。有趣的訪談練習結果:返回,遞增和參考行爲
試想想它是否輸出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 ++'時,i(它是0)的值在它遞增前返回。當增量可能發生時,該值將被丟棄,因爲它已經返回。試着做'return ++ i;'來代替。 – shahkalpesh
是的,但是你正在更新參考....它不應該回落到0.並且它被執行,因爲調試器中的值被更新爲1 – Sidewinder94
這是因爲後增量運算符。 嘗試閱讀Eric Lippert的這個優秀答案,以瞭解後增量如何工作: http://stackoverflow.com/questions/3346450/what-is-the-difference-between-i-and-i/3346729#3346729 – Boney