代码1:
class program
    {
       static public void num(int i)
        {
            i = 5;           
        }
        public static void Main()
        {
            int i = 1;
            num(i);
            Console.WriteLine(i);
            Console.ReadKey();
        }
    }
输出结果1代码2:
class program
  {
    static int num(int i, int j)
      {
         i = 5;
         j = 6;
         return i + j;
       }
     public static void Main()
       {
         int i = 1, j = 2;
         Console.WriteLine(num(i, j));
         Console.ReadKey();
       }
   }
输出结果11代码1,参数不是ref,所以,不影响Main函数内的变量i.输出为1.
但是第二个代码,有作何解释呢,哥哥?

解决方案 »

  1.   

    要什么解释?num 把实参 i,j 改写了,返回的是11,和形参 i,j 没关系。
      

  2.   

    理解值传值和引用传递
    看看MSDN
    static int num(int i, int j)
      {
      i = 5;
      j = 6;
      return i + j;
      }
    与定义的i = 1, j = 2值无关
      

  3.   


    using System; class Test
     {
        static int num(int i,int j)//第二步:i的值为1,j的值为2.static后面的int表示的意义是该函数返回int类型的值
        {
          i=5;//第三步:i由1变成5
          j =6;//第四步:j由2变成6
          return i+j;//第五步:5+6 =11,所以返回值为11
        }
        static void Main()
        {
           int i=1,j=2;//第一步:为变量赋值,变量i的值为1,变量j的值为2
           Console.WriteLine(num(i,j));//第六步:num方法返回的值为11,所以输出11.
        }
     }
      

  4.   

    你既没有打印i,也没有打印j,你打印的是num这个函数的返回(return)的值。
      

  5.   

    改成  public static void Main()
      {
      int i = 1, j = 2;
      int k=num(i, j);
      Console.WriteLine(i);
      Console.WriteLine(j);
      Console.ReadKey();
      }
      }
    试试。