黑马程序员技术交流社区

标题: 如何理解ref和out的区别呢 [打印本页]

作者: 孙亚雄    时间: 2012-8-14 14:08
标题: 如何理解ref和out的区别呢
迷糊。。。
作者: 许庭洲    时间: 2012-8-14 14:22
class Test
{

 static void outTest(out int x, out int y)
 {
  //x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行
  x = 3;
  y = 7;
 }

 static void refTest(ref int x, ref int y)
 {
  x = 9;
  y = x;
 }

 public static void Main()
 {
  //out test
  int a,b;
  //out情景1:使用前,变量可以不赋值
  outTest(out a, out b);
  Console.WriteLine("a={0};b={1}",a,b);
      //out情景2:使用前,变量可以赋值
  int c=55,d=33;
  outTest(out c, out d);
  Console.WriteLine("c={0};d={1}",c,d);

     //ref使用前,变量必须赋值
  int o=99,p=77;
  refTest(ref o, ref p);
  Console.WriteLine("o={0};p={1}",o,p);
 }

}
作者: 彭书雄    时间: 2012-8-15 22:36
用ref 修饰的参数在传入数值的之后一定要有初始化的值,
而out 修饰的参数在传入的时候 可以传入没有初始化的变量名   但是返回时必须有参数
作者: 梁健1    时间: 2012-8-16 18:55
out:当返回值不是一个的时候,可以使用out,out可以将方法中的值传给调用方法的参数,和普通参数一样,是单向的,只是方向刚好相反;
ref:这个参数类型更偏向于双向传值,即可以传参数值,也可以返回参数值;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2