请问同一类型新建两个对象,两个对象在托管堆是分别占有两段不同的内存吗?两个对象的地址相同吗?

解决方案 »

  1.   

    没有分了 蹭个帖子 我初学现在用三层架构,连mysql 就是连不上,谁有三层架构连的mysql的源码?或者给我写个示例(程序只要能连上mysql,就用label显示一个数据就行)我参考参考? 谢谢 
    邮箱:[email protected] 
    谢谢! 
     
      

  2.   

    不一定,要看这两个对象是什么类型及它们的值...如果是值类型对象就不存在托管堆内存也不存在托管堆地址...如果是引用类型对象,两个对象是同一引用就地址相同,托管堆内存自然也是同一块...如果不同则地址和托管堆内存分配都不同...如...
    object o1;
    object o2;
    o1=new Class1;
    o2=o1;//引用相同,地址也相同object o1;
    object o2;
    o1=new Class1;
    o2=new Class1;//引用不同,地址也不同
    例外的情况是string类型...
    string s1;
    string s2;
    s1="s1";
    s2="s2";//引用不同,地址也不同
    s2="s1";//引用相同,地址也相同
    这是因为string类型有特殊的字符串驻留技术,对具有相同字符串值的string对象共享同一引用...