ref 简单点就是可进可出,out只出不进,它们的区别可以归纳为两点:
1.ref需要初始化 out不需要 例如:
public void Add(ref int i)
{
int a = 1;
int b = 2;
i = a + b + i;
}
public void Execute()
{
int x = 10;
Add(ref x);
}
其中的 x在作为参数传入的时候 通过int x=10完成了初始化,
public void Add(out int i)
{
int a = 1;
int b = 2;
i = a + b ;
}
public void Execute()
{
int x;
Add(out x);
}
其中x在作为参数传入的时候 没有初始化,
2.通过ref 传入的参数由于肯定完成了初始化,所以可以参与运算,例如 i = a + b + i;
通过out传入的参数,由于不要求完成初始化,所以不能参与运算,其值在函数内部并不知道,所以也不能参与运算,只能给其赋值,在函数外部才能知道其数值,例如 i = a + b ;