代码改变世界

抛砖引玉:在C#中的对象引用的问题

2010-03-30 10:52  kwjlk  阅读(281)  评论(0)    收藏  举报

public class Test

   {

       private string_Name;

 

       public stringName

       {

            get{ return _Name; }

            set{ _Name = value; }

       }

   }

 

 

   public classTestMethod

   {

       public staticvoid Change(Testt)

       {

            t.Name = "狗狗";

       }

 

       public staticvoid Change(stringstr)

       {

            str = "狗狗";

       }

   }

 

   public classTestFunction

   {

       public voidChange(Test t)

       {

            t.Name = "猪猪";

       }

 

       public voidChange(string str)

       {

            str = "猪猪";

       }

}

 

 

       static voidMain(string[] args)

       {

            Testt = new Test();

            stringstr = "asd";

            t.Name = "wolf";

 

            TestMethod.Change(t);

            TestMethod.Change(str);

 

            Write(t.Name);

            Write(str);

 

            Testt1 = new Test();

            t1 = t;

            stringstr1 = str;

 

            newTestFunction().Change(t1);

 

            newTestFunction().Change(str);

 

            Write(str1);

            Write(t1.Name);

 

            Console.ReadKey();

       }

 

       static voidWrite(string str)

       {

            Console.WriteLine(str);

    }

 

What will output?

 

Yeah,the result is

 

狗狗

asd

asd

猪猪

 

Why this funny thing happen?