C#中ref关键字如何理解和使用?

解决方案 »

  1.   

    看看这个 REF关键字
      

  2.   

    结合OUT关键字一起看,OUT是不需要初始化的,REF需要初始化后传递,类似指针,所有更改都会反馈回来。
      

  3.   

    ref传递值,申请内存空间,将值传到指定的内存空间里面
      

  4.   

    类似 C++ 里的按别名传 &
      

  5.   

    简单的说就是 在参数前面加ref的话  那么传递的就是一个地址而不是一个实际的值
      

  6.   

    functionA(int a, out int b)//在代码中对 a 进行修改,不会对原数据造成影响
    {
    }
    functionB(ref int a, out int b)//在代码中对 a 进行修改,会对原数据造成影响。
    {
    }
    不使用ref 相当于传值,使用 REF 相当于传址
      

  7.   

    ref是传递参数的地址,out是返回值
    使用ref前必须对变量赋值
    当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字
    class Example
    {
      static void Method(ref int i)
      {
      i = i;
      }
      static void Main()
      {
      int val = 0;
      Method(ref val);
      }
    }
      

  8.   

    C++里面的引用传递,传地址。
    要和out一起看比较好感觉。
    一般函数传递时值传递,这样会造成函数中的生成一个临时对象(无形中增加了开销)。
    若是ref或out传递呢,则传递的是地址,就没有这个开销了。
    所以大的对象做形参传递时最好是用引用
      

  9.   

    都是引用传递,out不需要初始化,ref需要初始化参数
      

  10.   

    感谢 9楼  我也一直在考虑这个问题。  以后程序传参数时有可能都用 ref  传递地址就好了,省区很多开销