菜鸟提问,为什么下面的代码不能实现两个数值的交换;
  using System;
  class Test
  {
    static void Swap(int x, int y) {
          int temp = x;
          x = y;
          y = temp;
    }
          static void Main() {
          int i = 1, j = 2;
          Swap(i, j);
          Console.WriteLine("i = {0}, j = {1}", i, j);
    }
  }
编译上述代码 程序将输出
  i = 1, j = 2
而要改成using System;
class Test
{
  static void Swap(ref int x, ref int y) {
        int temp = x;
        x = y;
        y = temp;
  }
        static void Main() {
        int i = 1, j = 2;
        Swap(ref i, ref j);
        Console.WriteLine("i = {0}, j = {1}", i, j);
对于值类型参数和应用类型参数有些不明白

解决方案 »

  1.   

    值类型是传值的你第一个实际上是吧i,j的值传给了函数的参数x,y 然后函数里面是x,y的操作,对i,j没关系 
    而引用其实是把自己的地址传给了函数的参数,由于x,y的地址是指向i,j的,所以x,y的改变也会引起i,j的改变。Ps:一分都没有哦
      

  2.   

    一个是直接传值过去,而本身是没有发生变生。
    ref 是把该变量的内存地址给传过去,在执行这个函数的时候,由于操作的是地址,而不是值,所以肯定会变化的个人意见....