using System;
class Test {
static void Swap(ref int a, ref int b) {
int t = a;
a = b;
b = t;
}
static void Main() {
int x = 1;
int y = 2; Swap(ref x, ref y);
Console.WriteLine("post: x = {0}, y = {1}", x, y);
}
}程序如上,哪位高手帮我解释下具体的过程,输出结果是什么,越详细越好,我是初学者,谢谢了

解决方案 »

  1.   

    执行过程如下:
    (1)从Main()开始执行,int x=1和int y=2初始化x=1,y=2;
    (2)执行到swap(ref x,ref y),由于使用引用关键字ref,参数的值要返回,程序转到static void Swap(ref int a, ref int b);
    (3)int t=a->得t=1,
           a=b->得a=2,
           b=t->得b=1,
           即a与b交换,实际上是x与y的交换;
    (4)执行完static void Swap(ref int a, ref int b)后,程序又转到主函数,此时x与y已经交换了,输出x,y的值为2,1;
      

  2.   

    补充下:
    ref是引用型参数,它与值参不同,它不开辟新的内存区域.当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递给方法.在方法中,引用型参数通常已经初始化.