有个问题想问一下
C#方法中参数的传递默认是值传递,但遇到下面个问题有点不解
     class WrapTest
    {
        public int num = 1;    }     class Program
    {
       public static void Test1(WrapTest t)
       {
           t.num = 222;
       }        public static void Test2(WrapTest t)
        {
            WrapTest test = new WrapTest();
            test.num = 333;
            t = test;
        }
        static void Main(string[] args)
        {
            WrapTest t1 = new WrapTest();
            t1.num = 111;
            Test1(t1);
            Test2(t1);
            Console.WriteLine(t1);
        }
    }Test1(t1)后t1.num变为222了
Test2(t1)后t1.num还是222了
而t1是一个WrapTest实例的引用变量,那么Test2执行完后t1应该指向Test2中生成的对象,也即t1.num应该为333啊
不知道上述的理解哪里出问题了,请各位大侠指教,谢谢!

解决方案 »

  1.   

    test2中的参数t在函数内被迫叛变了,不再为原来的主人办事了!
      

  2.   


                    public   static   void   Test2(ref WrapTest   t) //
                    { 
                            WrapTest   test   =   new   WrapTest(); 
                            test.num   =   333; 
                            t   =   test; 
                    } 
      

  3.   

    t   =   test;   t  在这里被强奸了