object c = "c";
object d = c;
Console.WriteLine(d);
d = "d";
Console.WriteLine(c);谁知道答案,并解释下
偶很郁闷

解决方案 »

  1.   

    低价转让:中#美#爱#梯#科技.Net软件工程师培训课程内容(共35G),声音清晰,课程完整!
    需要这个培训视频的朋友请联系 QQ 936652114
      

  2.   

    C
    C第一个相当于 d=c="c",当然输出"C"啊
    第二个c又没改变,当然也是输出c的值"c"啊
      

  3.   

    d="d"的时候,d指向了另外一个字符串,而不是将原来的字符串做了修改。
      

  4.   

    字符串在.net framework中是一个特例,一个字符串生成之后就不可修改,String类所提供的操作其实都包括隐含的生成新字符串的动作。如果需要在应用中修改字符串,可使用StringBuilder类。
      

  5.   

    那下面这段代码呢
    public class TypeRef
    {
        public string a = string.Empty ;
        public TypeRef(string i)
        {
           a = i;
        }
    }TypeRef ref1 = new TypeRef("a");
    TypeRef ref2 = ref1;
    Console.WriteLine(ref2.a);
    ref2.a = "b";
    Console.WriteLine(ref1.a);
      

  6.   


    public class TypeRef 

        public string a = string.Empty ; //TypeRef的数据成员
        public TypeRef(string i) 
        { 
           a = i; //使a指向传入的字符串
        } 
    } TypeRef ref1 = new TypeRef("a"); //创建一个新的TypeRef对象,此时ref1.a指向在此处传入的字符串
    TypeRef ref2 = ref1; //ref2与ref1指向同一个对象
    Console.WriteLine(ref2.a); 
    ref2.a = "b"; /*修改ref2.a,也即修改ref1.a,作用是使这个string类型的数据成员指向一个新的字符串,而非修改了原来的字符串*/
    Console.WriteLine(ref1.a);
      

  7.   

    那为什么类的两个实例始终指向同一个对象,而object就变了呢?
      

  8.   

    也就是为什么“修改ref2.a,也即修改ref1.a”
    而为什么“修改object d时不修改c”?
      

  9.   

    假如再来一个ref2=...,两个变量就不会再指向同一个对象。
    纠正,没有两个实例,只有两个变量,实例只有一个,调用new的时候生成的。
      

  10.   

    因为修改的是ref2.a,而不是ref2。
      

  11.   

    哦,了解了,thanks,芥子,十分感谢!