值传递是只参数在传参前和传参数的值没有发生变化;引用传递也叫地址传递,当它的值在方法中发生改变后,会影响传参前的值。请看下面的例子。
private void Add(int a)
{
a = a + 1;
}
private void Add2(ref int a)
{
a = a + 1;
}
//如果传参的时候,前面没有标识ref,表示采用值传递(仅局限于简单数据类型)
int a = 5;
Add(a);
MessageBox.Show(a.ToString()); //执行结果是5
int a = 5;
Add2(ref a);
MessageBox.Show(a.ToString()); //执行结果是6
需要注意的是:结构也是值传递
struct MyData2
{
private int age;
public MyData2(int Age)
{
age = Age;
}
public void Addage()
{
age++;
}
public int getAge()
{
return age;
}
}
private void Add(MyData2 data)
{
data.Addage();
}
MyData2 data = new MyData2(20);
Add(data);
MessageBox.Show(data.getAge().ToString()); //执行结果是20,值前后没有变化