如何访问方法中更改的变量

时间:2016-11-17 20:26:07

标签: c#

我有一个名为 processOrders 的方法,它接受3个参数并且不会返回任何内容。其中一个参数名为 currentOrder

在processOrders处理完currentOrder之后,我将需要它的值。

当该方法没有返回任何内容时,如何通过processOrders方法更改currentOrder的值?

谢谢!

以下是代码:

var orderTitle = "";
var currentOrder = 0;
var totalOrders = orders.Count;

processOrders(currentOrder, totalOrders, orders);

if(currentOrder > 10) {
  //...do stuff...
}

processOrders(int currentOrder, int totalOrders, IList<Orders> orders)

{
    while (currentOrder < totalOrders)
    {

       if(orders[currentOrder] < 5)
       {
            orderTitle = orderTitle + orders[currentOrder];
            currentOrder ++; 
       } else {
             yield return
               CreateNewOrderForm(currentOrder, orderTitle)
             break;
       }  

   }

}

1 个答案:

答案 0 :(得分:1)

没有太过技术性......传递基元的标准方法(如“int”或“decimal”)是按值传递它们。这意味着您将值传递给函数,并在函数内部创建变量的新“副本”。该副本仅在函数内部被操作,并在函数退出时被销毁。

如果要操作函数中的变量并保留这些更改,则需要通过引用传递。通过引用传递意味着您为函数赋予变量“指针”,如果函数对值进行任何更改,它将更改变量的副本,即变量的副本。

要完成此操作,必须将参数声明为参考参数,然后使用引用调用该函数。像这样:

public void processOrders(ref int currentOrder, int totalOrders, IList<Orders> orders)
{
    //...
}

public void main(int[] args)
{
   //....
    processOrders(ref currentOrder, totalOrders, orders);
    if(currentOrder > 10)
    {
        //do something
    }
}

请注意,您不必通过引用显式传递您的订单列表,因为默认情况下,对象是通过引用传递的。