out 和 ref 关键字非常的相似都是以引用的方式来传递。不同的地方在与ref要求传递的变量必须进行初始化。看看下面例子中的表现:
1
class OutRefTest
2
{
3
public void Main()
4
{
5
int parm;
6
TestOut(out parm);
7
//parm的值变成了10.
8
Console.WriteLine("{0}", parm);
9
10
//parm2必须进行初始化
11
int parm2 = 2;
12
TestRef(ref parm2);
13
//parm的值变成了10.
14
Console.WriteLine("{0}", parm);
15
Console.Read();
16
}
17
public void TestOut(out int parm)
18
{
19
parm = 10 //必须赋值.
20
}
21
public void TestRef(ref int parm)
22
{
23
parm = parm * 10; //必须赋值.
24
}
25
}
class OutRefTest2
{3
public void Main()4
{5
int parm;6
TestOut(out parm);7
//parm的值变成了10.8
Console.WriteLine("{0}", parm);9
10
//parm2必须进行初始化11
int parm2 = 2;12
TestRef(ref parm2);13
//parm的值变成了10.14
Console.WriteLine("{0}", parm);15
Console.Read();16
}17
public void TestOut(out int parm)18
{19
parm = 10 //必须赋值.20
}21
public void TestRef(ref int parm)22
{23
parm = parm * 10; //必须赋值.24
}25
}注意:
1.在使用out来传递变量的时候可以不必为变量parm初始化,而使用ref来传递变量的时候必须为变量parm2进行初始化工作。
2.如果在方法的参数列表中包含了out 或 ref关键字的话,就必须为相应的参数赋值。如方法TestOut 和 TestRef中表现的一样。
使用的时机:
如果你想让你写的方法可以一次返回多个值就需要使用out 或 ref来实现。



浙公网安备 33010602011771号