在C#的CTS中,有个引用类型叫做object,我们都知道引用类型存储在堆中,而且引用类型特点就是假如有多个指向同一地址的变量,那么改变任一都会使这个引用类型发生改变.
问题来了,在我将object值付给另一个object类型时,好像并没有达到这个效果,而像值类型之间的复制测试代码如下 
using System;namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            object object1 = new object();
            object1 = "object1";
            object object2 = object1;
            object2 = "object2";            Console.WriteLine(object2.ToString());
        }
    }
}各位觉得页面应该输出什么呢 ?
分数不多,请大侠多多帮忙 谢谢

解决方案 »

  1.   

    不是输出“object2”么?
    这有什么疑问么?
      

  2.   

    不好意思
    刚才写马虎了点
    最后一行代码应是Console.WriteLine(object1.ToString());  
      

  3.   

    object1
    又没指向同一个地址
      

  4.   

    能说的明白点吗?
    我在上面已经把object1赋给object2 了,此时object2应该和 object1指向同一地址吧,为什么还是object1呢
      

  5.   

    如果是
    Console.WriteLine(object1.ToString());
    应该输出的"object1"
    object object2 = object1;//它把"object1"地址告诉了object2
    如果是
    Console.WriteLine(object2.ToString());
    它输出的"object2"
    虽然在创建object2时给了他一个值。
    object2 = "object2";//现在又把"object1"的那个地址盖了
    我也是新手,如果不对还请教
      

  6.   

    object2 = "object2";
    你已经把object2 改为了string,出现这种情况因为是string的特殊性,具体可以看看msdn关于string的描述
      

  7.   

    参看以下代码
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                TestObjectClass obcls = new TestObjectClass();
                obcls.Name = "user1";
                object object1 = new object();
                object1 = obcls;//object1指向obcls
                object object2 = object1;//object2指向object1
                obcls.Name = "user2";//obcls改变
                Console.WriteLine(((TestObjectClass)(object2)).Name);       
             }
        }
        class TestObjectClass
        { 
            private string _name;
            public string Name 
            {
                get { return _name; }
                set { _name = value; }
            }    }
    }
      

  8.   

    截贴
    感谢各位的热心回答.
    正确答案为 hdt(倦怠) 所说.
    String类型的特殊性所致.