• 1
  • 2
  • 3
  • 4
  • 5
asp.net空间 首 页  »  帮助中心  »  虚拟主机  »  asp.net空间
总结C#中ref和out的区别
发布日期:2015-10-15 16:10:3

  总结C#中ref和out的区别

  C#中ref和out两者在使用时有一定的相同之处,不过也有不同点。

       首先,ref和out的本质上的一点不同就是: ref是传递参数的地址,而out是返回值。其次,在使用ref前必须对变量赋值,out在使用时就不用。

  还有就是out的函数会清空变量,即使变量已经赋值也不行,退出函数时所有out引用的变量都要赋值,但是ref引用的可以选择修改,也可以选择不修改。

  具体的使用区别可以从下面的代码明显看到:

  using System;

  class TestApp

  {

  static void outTest(out int x, out int y)

  {//离开这个函数前,必须对x和y赋值,否则会报错。

  //y = x;

  //上面这行会报错,因为使用了out后,x和y都清空了,需要重新赋值,即使调用函数前赋过值也不行

  x = 1;

  y = 2;

  }

  static void refTest(ref int x, ref int y)

  {

  x = 1;

  y = x;

  }

  public static void Main()

  {

  //out test

  int a,b;

  outTest(out a, out b);

  Console.WriteLine("a={0};b={1}",a,b);

  int c=11,d=22;

  outTest(out c, out d);

  Console.WriteLine("c={0};d={1}",c,d);

  //ref test

  int m,n;

  //refTest(ref m, ref n);

  int o=11,p=22;

  refTest(ref o, ref p);

  Console.WriteLine("o={0};p={1}",o,p);

  }

  }