程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> out參數的失控

out參數的失控

編輯:關於.NET

開始寫了個函數,用來輸出剩余量,順便用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);
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved