ref是引用的意思,在函数体内就可以改变它的值.不加ref的话,在函数体内不能改变它的值,相当于把它copy了一份来使用.

解决方案 »

  1.   

    系统控件:
    public void xxx(TextBox textBox)
    {
        textBox.Text = "xxx";
    }
    将系统控件作为参数进行传递,无需引用,控件的属性也会被更改。
    你使用了 "private",我想你是在同一个类中进行试验的,放在外部试试?不肯能的,连 int[] 数组都不行,必须要加 ref 引用。
      

  2.   

    是引用类型就能改变,,
    好像是楼主我回答问题了,就的给我分一样:)to 
        jeky123(jeky)  
     难道你认为是深拷贝??,,为什么在函数体内不能改变它的值?
      

  3.   

    class a
    {
    public int b;
    public a()
    {
    b=1;
    }
    } class test
    {
    static void changvalue(a temp)
    {
    temp.b=temp.b+1;
    }
    public static void Main()
    {   
    a param=new a();
    Console.WriteLine("old value:{0}",param.b);
    changvalue(param);
    Console.WriteLine("new value:{0}",param.b);
    }
    }  
          
    上面那代码的的输出是:
    old value:1
    new value:2为什么,我并没有使用:
    static void changvalue(ref a temp)              //引用
    {
    temp.b=temp.b+1;
    }但为什么值会变呢? 同样的程序换成:class test
    { static void changvalue(int temp)
    {
    temp=temp+1;
    }
    public static void Main()
    {   
    int param=0;
    Console.WriteLine("old value:{0}",param);
    changvalue(param);
    Console.WriteLine("new value:{0}",param);
    }
    }
    这种情况下,因为没用ref,param的值是不会变的。int类型同样都是类,为什么会有这种差别?