说明:"对象1"调用它的一个todo方法会new一个"对象2".问题1:当"对象1"第一次调用这个todo方法时会new一个"对象2",当"对象1"第二次调用这个todo方法时,第一次调用todo方法时生成的"对象2"还会存在吗?我自己的答案:问题1答案是:不存在。各位高手,我能喝酒不了?

解决方案 »

  1.   


    这要看存在是什么介定的,如果存的意思是还可以用,那么,你不用喝了(前题是你的对象2的变量是todo方法的局部量)
    否则不好说存不存在
      

  2.   

    感谢楼上二位!!有酒同醉!!
    问题补充:如果"对象2"这个类new了一个时钟,它每一秒钟向控制台输出一句话,那么.net的垃圾回收器还会回收"对象1"第一次调用todo方法时创建的"对象2"吗?
    我的答案:.net垃圾回收器不会回收"对象1"第一次调用todo方法时创建的"对象2"。但"对象1"第一次调用todo方法时创建的"对象2"还是存在内存中,只是我们用不了了,.net可以用.能喝第二瓶不?
      

  3.   

    感谢大家的支持!!
    3楼说的比较详细。他提出了一个"存在"与"不存在"的问题。其实严格的来讲,我们引用不到的对象不等于它就不存在于内存之中了。也许.net会引用它,只是我们引用不到了。
      

  4.   

    喝吧 不喝对不起CLR了 哈哈
      

  5.   

    喝吧 不喝对不起CLR了 哈哈
      

  6.   

    两瓶都喝吧,然后去看看clr的垃圾回收机制