開始寫了個函數,用來輸出剩余量,順便用out參數把總量、使用量和無效量也輸出,:
int GetRest(out int all, out int usedCount,out int invalidCount)
{
all = 10; // all = GetAll();
usedCount = 5; // usedCount = GetUsedCount();
invalidCount = 3; // invalidCount = GetinvalidCount();
return all - usedCount - invalidCount;
}
用的時候發現很多時候不需要得到三個輸出參數,於是寫了個無參數的重載:
int GetRest()
{
int temp;
return GetRest(out temp, out temp, out temp);
}
F6,編譯通過!
吼吼,可是,輸出數據非常奇怪!於是單步調試,F10,局部變量窗口發現 all,usedCount,invalidCount居然是同樣的值!當然也就馬上明白是怎麼回事:out傳參是引用傳遞!三 個變量指向同一個對象,對值類型這種情況還是很少見,不借助out/ref參數,想實現多個值類型變量指 向同一個對象也難吶。
於是最終代碼:
int GetRest()
{
int temp1,temp2,temp3;
return GetRest(out temp1, out temp2, out temp3);
}