C# 中out和ref关键字都可以使参数通过引用来传递,不同之处在于ref要求变量必须在传递之前进行初始化。例如:
class Demo{
static void Method(ref int i)
{
i = 44;
}
static void Main()
{
int val = 0;
Method(ref val);
// val is now 44
}
}
如果使用out 参数,out 参数传递的变量不必在传递之前进行初始化。例如:
class Demo { static void Method(out int i) { i = 44; } static void Main() { int value; Method(out value); // value is now 44 } } 但使用out的参数在返回之前要赋值。 out和ref在运行时的处理方式不同,但是在编译时的处理方式是相同的,所以使用out和ref的方法是不能重载的,例如: Public class Demo{ public void Demo1(ref int val){....} |
public void Demo1(out int val){....}
}
但是如果一个方法使用out或ref,另一个方法不是用out或ref,那么是可以重载的,例如
Public class Demo{
public void Demo1(int val ){....}
public void Demo(out int val){....}
}