下面附上程序
void swap(ref int a, ref int b)
{
int tmp;
tmp = a;
a = b;
b = tmp;
}
private void button1_Click(object sender, EventArgs e)
{
int x = 3;
int y = 4;
string s = "2323";
button1.Text = s;
swap(ref x,ref y);
MessageBox.Show("x="+x.ToString()+",y="+y.ToString());
int.TryParse(button1.Text,out y);
}
运行后MessageBox输出的x=4,y=3;而如果在int.TryParse(button1.Text,out y);这句的后面加上断点看下局部变量就会发现b=2323了说明了他们都能改变实参的值。那区别又在哪里呢? 作者: 方杰斌 时间: 2014-5-17 20:04
方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。
当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。
若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。
不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。
属性不是变量,不能作为 out 参数传递。