Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 垃圾收集器如何在C中释放内存#_C#_Garbage Collection - Fatal编程技术网

C# 垃圾收集器如何在C中释放内存#

C# 垃圾收集器如何在C中释放内存#,c#,garbage-collection,C#,Garbage Collection,代码如下所示 public class clsMisc : IDisposable { List<clsEmployee> lst = new List<clsEmployee>(); void Add(){ lst.Add(obj); //Adding to it list here } public void Dispose() { lst = null; } } 一旦退出使用范围,就会调用clsMisc中的

代码如下所示

public class clsMisc : IDisposable {
  List<clsEmployee> lst = new List<clsEmployee>();

  void Add(){
     lst.Add(obj);
     //Adding to it list here
  }

  public void Dispose()
  {
    lst = null;
  }

}
一旦退出使用范围,就会调用clsMisc中的dispose方法,并在该方法中调用dispose方法 我们分配了null

存储在内存中的值(列表中clsEmployee的现有记录)是否将被释放,它将分配新值,还是将创建列表的新实例并分配空值

因为我是新手,所以我无法理解这种行为


有人能在这方面指导我吗?

你根本不必担心它,因为收集器相当聪明,而且因为它是一种托管语言,你真的应该让它去做

收集器将决定何时需要进行清理,因此无法保证何时进行清理


但是如果你死心塌地地想要强制收集,你可以调用1。你不需要将
lst
设置为
null
。2.你的问题是什么?using语句完成后,对象是否得到GC?或者不同?设置为null后,将立即发生什么?不会立即发生任何事情。但如果这恰好是您设置为null的实例的唯一引用。这意味着不再有对该对象的托管引用,它有资格进行垃圾收集。垃圾收集触发时,GC将对其进行收集。@SriramSakthivel感谢您的回复。我明白了。因此,在上述场景中使用IDisposable可能不会给我带来什么好处,对吧?IDisposable和
using
块与内存无关。它们与资源利用率有关。如果类正在处理其他对象,基本上不用担心在C#中进行处理。您只想在类拥有
本机资源时使用IDisposable。@RichardSchneider不仅如此。如果您的类具有实现
IDisposable
的任何字段,则必须实现
IDisposable
您好,谢谢您的回复。。我明白了。
Using( clsMisc obj = new clsMisc()){
 //Here goes the code
}