2016-02-22 52 views
1

我有一點問題。點擊一個按鈕後,我想買東西。我的自定義方法無法正常工作

private void btnBuyLemonade_Click(object sender, EventArgs e) 
     { 
      BuyBuildings(lemonadeFactory, money, lemonadeFactoryPrice); 
     } 

然後我有這樣的事情方法

private void BuyBuildings(int buildingName, double _money, double buildingNamePrice) 
     { 
      buildingName++; 
      _money -= lemonadeFactoryPrice; 
      buildingNamePrice *= 1.8; 
     } 

但它不工作,你可能知道的。我該怎麼做/閱讀才能正確書寫。 Ofc我想增加1個lemonadeFactory建築物的數量,將它的價格乘以1.8,並從我的錢中減去lemonadeFactoryPrice。

回答

1

你的問題是,在C#中,原始類型(如int,double等)按值傳遞。所以當你在你的方法中對它們進行操作時,它實際上是在改變這些變量的副本。如果這些是類級別的變量,你可以改變它們而不將它們作爲參數,如:`私人無效BuyBuildings(REF INT buildingName,裁判雙重_money,REF:

private void BuyBuildings() 
     { 
      buildingName++; 
      _money -= lemonadeFactoryPrice; 
      buildingNamePrice *= 1.8; 
     } 
+0

或者,您可以通過引用傳遞變量double buildingNamePrice)' –

+1

默認情況下,所有值都按值傳遞。對於值類型來說,這意味着該值被複制,而與參考類型複製,而參考類型是被複制的參考,而不是參考指向的實際對象。 – juharr

+0

@juharr是的,當然。我沒有看到在這裏提到的問題範圍內的任何細節。這個用戶可能已經足夠了解「基於價值的基元,通過參考而複雜化」;無論如何,他們可能會查找這些條款。 – DrewJordan

相關問題