只是有几个问题在我的脑海里......

  • 创建一个没有引用的对象是一种很好的做法,如下所示。如果是这样,为什么?
    LoadIt(new myClass()); 其中 LoadIt 是一些方法
  • 上面创建的对象会发生什么。会不会被垃圾回收。如果是什么时候?即,它的范围是否与其他对象相同
  • 有没有机会再次引用同一个对象?
  • 最佳答案

    范围由方法决定(此处为 LoadIt)...

    如果 Load it 方法将其 myClass 参数存储在全局变量中,那么在全局变量超出范围之前,对象将保留在内存中......即。它不会被垃圾收集,因为全局变量仍在引用它......

    对象一般存放在堆中,可以被 Stack 中的许多变量引用...这里你不想在你的方法的堆栈中保存引用...但它在 LoadIt 方法的堆栈中通过它的参数被引用...因此,在 Load it 方法的参数超出范围之前,该对象不会被垃圾回收...与此同时,LoadIt 方法可以尝试在全局变量中再次引用它或将其作为参数传递给另一个方法......总的来说,只有当堆栈(或其他对象)中的对象的所有引用都超出范围时,该对象才会被垃圾收集......

    取回对这个对象的引用,完全取决于 Load it 方法对这个对象做了什么......如果该方法除了使用参数变量引用它之外什么都不做,那么你无法取回它......但是如果该方法复制对其他公共(public)变量的引用,然后您可以使用该变量并取回引用。

    关于c# - 创建没有引用的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2286531/

    10-17 02:47