2016-02-22 56 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

相关问题