ref 和 out 声明的参数
1.两者都是按地址传递的,使用后都将改变原来参数的数值。
2.ref 可以把参数的数值传递进函数
3.out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。
4.这个就是两个的区别:ref是有进有出,out是只出不进。
参数传递:ref
概念:
1.ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。
2. 若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。 即 方法参数 中必须声明 ref 修饰
代码:
static void Main(string[] args){
int _ref = 5;
OldRef(ref _ref);
Console.WriteLine(_ref);
}
public static void OldRef(ref int i){
i = 44;
}
如此 以上的C#代码 将会打印出值: 44,因为通过ref传递的参数将会改变其本事的值 ,因此为 有进有出,修改本身。
参数传递:out
概念:
1.out 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。
2.在Out传入时 会将参数本身清空,因此 此参数无需初始化,out在传入时必须现在函数内初始化才可调用
static void Main(string[] args){
int _out;
OldOut(out _out); //无需使用初始化
Console.WriteLine(_out);
}
public static void OldOut(out int i){
// Console.WriteLine(i); //如果直接打印将被报空值
i = 55; //此时对传入的out进行赋值
}
如此 以上的C#代码 将会打印出值: 55,因为通过out传递的参数将会改变其本事的值 ,当然在函数内必须率先对其进行赋值才可。
因此为 无进有出,修改本身。