纳金网

标题: C# ref和out的用法及区别 [打印本页]

作者: 王者再临    时间: 2014-9-26 04:07
标题: C# ref和out的用法及区别

  1. class Program
  2.     {
  3.        //ref 和out类似c++指针,当然也不能拿来直接当指针用,是能引用一些参数,但是不能直接作为地址来控制参数(大概意思)
  4.         static void Main(string[] args)
  5.         {
  6.             int a, b;
  7.             OutTest(out a, out b);
  8.             Console.WriteLine("a={0},b={1}",a,b);
  9.             //output a = 1;b = 2;

  10.             int c = 11, d = 22;
  11.             OutTest(out c, out d);
  12.             Console.WriteLine("a={0},b={1}", a, b);
  13.             //output c = 1;d = 2;

  14.             int m = 11, n = 22;
  15.             //RefTest(ref m, ref n);
  16.             RefTest(ref m, ref n);
  17.             Console.WriteLine("m={0},n={1}", m, n);
  18.             //output m = 22;n = 11;

  19.             Swap(m, n);
  20.             Console.WriteLine("m={0},n={1}", m, n);
  21.             //output m = 22;n = 11;
  22.         }

  23.         static void OutTest(out int x, out int y)
  24.         {
  25.             //方法体外可以不用对传出参数赋值
  26.             //方法体内,必须对传出的参数赋值,否则报错,例如:x=y;
  27.             //适用于多个返回值的函数
  28.             x = 1;
  29.             y = 2;
  30.         }

  31.         static void RefTest(ref int x, ref int y)
  32.         {

  33.             //方法体外,必须对参数赋值,否则报错
  34.             //方法体内,ref对参数可以赋值也可以不赋值
  35.             //适合引用原值,并对原值修改
  36.             int temp = x;
  37.             x = y;
  38.             y = temp;
  39.         }

  40.         static void Swap(int a, int b)
  41.         {
  42.             int temp = a;
  43.             a = b;
  44.             b = temp;
  45.         }
  46.     }
复制代码

作者: hariboot    时间: 2014-9-26 08:52
MARK,技术贴
作者: Tanix    时间: 2014-9-28 20:33
谢谢楼主分享,顶一个!
作者: oelongeo    时间: 2014-9-28 21:28
感谢王者再临指导
作者: hyui    时间: 2014-10-2 22:26
Great share  code !




欢迎光临 纳金网 (http://old.narkii.com/club/) Powered by Discuz! X2.5