【发布时间】:2014-04-22 07:29:02
【问题描述】:
我今天和我的同事聊了起来,她说她刚刚知道了使用 using 声明背后的原因。
//Using keyword is used to clean up resources that require disposal (IDisposable interface).
using (StreamReader reader = new StreamReader(@"C:\test.txt"))
{
string line = reader.ReadLine();
}
我指出该对象被标记为“可以处置”,但实际上并没有被处置和垃圾回收,除非 GC 决定这样做。
她回应说,一旦 using 语句结束,对象将被自动释放,因为 using 语句被转换为 try-catch-finally 块。因此,对象必须在 using 语句的最后被释放。
我对此感到困惑,因为我知道使用 using 语句并不能保证对象会被 GC 收集。所发生的只是调用Dispose() 方法。 GC 决定何时对它进行 GC。但是当她要证据时,我找不到任何证据。
有谁知道这是如何工作的,以及如何证明它?
【问题讨论】:
-
将处理与垃圾收集分开很重要stackoverflow.com/a/574659/284240
标签: c# .net garbage-collection dispose