菜鸟提问,为什么下面的代码不能实现两个数值的交换;
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);
对于值类型参数和应用类型参数有些不明白
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);
对于值类型参数和应用类型参数有些不明白
而引用其实是把自己的地址传给了函数的参数,由于x,y的地址是指向i,j的,所以x,y的改变也会引起i,j的改变。Ps:一分都没有哦
ref 是把该变量的内存地址给传过去,在执行这个函数的时候,由于操作的是地址,而不是值,所以肯定会变化的个人意见....