昆山国显光电是国企吗:求答:C#简单问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/05 08:34:55
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);
}
}

这个是关于C#中型参和实参的问题,但我搞不明白前面的swap函数怎么解释?看得我比较晕乎。

晕死.上面几位到底有没有运行过这个函数啊?
结果是i和j并没有调换.
我是这么理解的:
x,y都是形式参数,i,j是实际参数.
i,j将自己拷贝一份,复制给x,y.因此在swap函数作用过程中,交换数值只是在复制了i,j值的x,y上进行的,i,j所在地址的变量并没有被改动.所以i,j的值不变.
楼主你再运行下下面这个可能会理解更深些.
class Test
{
static int i=1,j=2;
static void swap(int x,int y)
{
int temp =x;
x=y;
y=temp;
}
static void swap(out int x,out int y)
{
x=i;
y=j;
int temp =x;
x=y;
y=temp;
}
static void Main()
{
swap(i,j);
Console.WriteLine("i={0},j={1}",i,j);
swap(out i,out j);
Console.WriteLine("i={0},j={1}",i,j);
Console.ReadLine();
}
}

前面是先把X的值保存到一个临时变量temp,再把Y的值保存到X,最后再将temp里原来X的值保存到Y,实际上完成了X,Y的值的交换.

就是将X,Y的值交换

就是将X,Y的值交换