我的理解:
第一个方法,你每次循环的时候都会加200,这样肯定会持续相加第二个方法,aaa的方法定义了一个money,因此你在方法里面加值的时候,只是改变了aaa方法里面money,外面的还是没变,要想改变aaa方法外面定义的money,你可以把aaa里面的money返回给外面定义的

解决方案 »

  1.   

    class Program
        {
            static void Main(string[] args)
            {
                bool isOver = true;
     
                int money = 100;
     
                while (isOver)
                {
                    aaa(ref money);
     
                    Console.ReadKey();
                }
     
                Console.ReadKey();
            }
     
            public static void aaa(ref int money)
            {
                Console.WriteLine("我有{0}元", money);
                money += 200;
                Console.WriteLine("现在我有{0}元", money);
            }
        }
    第二个代码改成上面的。
      

  2.   

    money不是全局变量,所以你在方法里面修改他的值也没用,这时就需要方法返还一个money的值,来进行传递。
    class Program
        {
            static void Main(string[] args)
            {
                bool isOver = true;
     
                int money = 100;
     
                while (isOver)
                {
                    money = aaa(money);
     
                    Console.ReadKey();
                }
     
                Console.ReadKey();
            }
     
            public static int aaa(int money)
            {
                Console.WriteLine("我有{0}元", money);
                money += 200;
                Console.WriteLine("现在我有{0}元", money);
    return money;
            }
        }
      

  3.   

    楼上两位正解,楼主写的函数只改变了内部临时变量,函数执行完了就没有了。要么通过函数返回值的方法更改money的值,要么将money 的引用传入函数。
      

  4.   

      public static int aaa(int money1)
            {
                Console.WriteLine("我有{0}元", money1);
                money1 += 200;
                Console.WriteLine("现在我有{0}元", money1);
                return money1;
            }
      

  5.   

    把:
    int money = 100;
    这一句写在main方法外边试试 class Program
        {  
     int money = 100;
            static void Main(string[] args)
            {
                bool isOver = true;
     
                while (isOver)
                {
                    aaa(money);
     
                    Console.ReadKey();
                }
     
                Console.ReadKey();
            }
     
            public static void aaa(int money)
            {
                Console.WriteLine("我有{0}元", money);
                money += 200;
                Console.WriteLine("现在我有{0}元", money);
            }
        }
      

  6.   

    请首先了解一下variable life cycle.
      

  7.   

    你的money 不是全局的    你穿参到方法里面  改的是你传的参 又不是money 。   而且你在方法里面给money ++要改成  this.money ++。    不过还是建议你给方法定一个return吧  这样是最直接的方法。money = aaa(money); public static int aaa(int money){return money;
    }
      

  8.   

    第二个代码的while只是在不断的执行aaa函数,而aaa得到的参数应该总是100,我没测试,只是看了看,错了莫见怪,解决方法楼上都说了
      

  9.   


       class Program
        {
            static void Main(string[] args)
            {
                bool isOver = true;
      
                int money = 100;
      
                while (isOver)
                {
                    money = aaa(money);
                     money += 200;
                    Console.ReadKey();
                }
      
                Console.ReadKey();
            }
      
            public static int aaa(int money)
            {
                Console.WriteLine("我有{0}元", money);
                
                Console.WriteLine("现在我有{0}元", money);
                return money;
            }
        }
    楼猪改下money += 200;放在第一个while里面,这样就会吧累加的money传递到下一个方法里面了,如果你把money += 200;写在aaa方法里面。累加的只是aaa方法的参数,对调用aaa方法的 money = aaa(money);这个money没有影响的。
      

  10.   

      你这个问题是值类型转换成引用类型的为题,  需要在参数前加   ref
      

  11.   

    楼主,这是基本的概念问题,只要把public static int aaa(int money) ,改为:public static int aaa(ref int money),就实现与你一段代码一样的效果。是传值和传址的区别。