ref关键字
ref关键字其实是用来对static的方法里面的值,实现真正的关联。
比如:
static void TestRef(int a,int b)
{
int temp;
temp = b;
b = a;
a = temp;
}
你在使用这个方法的时候,并不会发生交换。
static void TestRef(ref int a,ref int b)
{
int temp;
temp = b;
b = a;
a = temp;
}
这样才会发生交换。
原理是,不加ref,是(按值传递)不是(按引用传递),
所以在使用a和b的时候,里面参数a和b仅仅是复制了外面a和b的值,
然后进行交换,这个交换仅在方法内,实际并没有对外面的a和b造成影响。
举例:
class Program
{
static void TestRef(string a,string b)
{
string temp;
temp = b;
b = a;
a = temp;
Console.WriteLine(a + " " + b);
}
static void Main()
{
string a = "Hello";
string b = "World";
TestRef(a,b);
Console.WriteLine(a+" "+b);
Console.Read();
}
}
输出:
World Hello
Hello World
(按值传递)还是(按引用传递)也是方法签名的一部分。