小生刚刚接触c#,有些问题一直很困惑。
在方法的参数列表里面有时候会碰到   method(ref 类型 a)ref有什么作用啊。如果a是引用类型和数值类型有什么区别啊。给我的感觉是ref就是有个回带的功能,既在方法内部修改变量,方法外的变量内容也跟着更改。但是如果a是引用类型的话,不用使用ref 也是同样的功能啊。谢谢,各位大侠了啊。

解决方案 »

  1.   

    你理解的没错,就是这样,如果a不是引用类型,用ref修饰就是引用了,参数值可以传入也可以传出。如果类型本身是引用的,就不必加了
      

  2.   

    在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数,可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
      

  3.   

    http://www.chinaz.com/Program/.NET/101U1122006.html
      

  4.   

    http://blog.csdn.net/lishenghu365/archive/2009/12/01/4913260.aspx
      

  5.   

    ref 和 值、引用类型是两个概念,四种组合ref 引用类型相当于可以在内部修改这个变量的指向
    或者说传递给他一个对象,他返回另外一个对象。
    无ref只能修改这个对象的属性值,但不能返回另外一个对象
      

  6.   

    1.记得最初介绍的时候用的一个例子:private void button1_Click(object sender, EventArgs e)
            {
                int a = int.Parse(textBox1.Text.Trim());
                int b = int.Parse(textBox2.Text.Trim());
                tran(ref a, ref b);//LZ应该看得懂吧,两个方法试试后你就明白了
                //tran( a, b);
                textBox3.Text = a.ToString();
                textBox4.Text = b.ToString();
                
            }        private void tran(int a, int b)
            {
                int temp = 0;
                temp = a;
                a = b;
                b = temp;
            }        private void tran(ref int a, ref int b)
            {
                int temp = 0;
                temp = a;
                a = b;
                b = temp;
            }
    2.各位c#大侠帮帮小弟,感谢
    http://topic.csdn.net/u/20101102/17/08985402-6e66-4a5f-80c6-398ac5b5c9d0.html