所以我们假设我们有一些像这个Web服务客户端对象
var myname = new WebServiceClient().GetName ( ) ;
此对象(Web服务客户端())会发生什么情况,它会自动处理或留在内存中。
答案 0 :(得分:1)
“Disposing”(调用IDisposable.Dispose())与内存无关。它与释放非托管资源(如文件或数据库句柄)有关。
当您不调用Dispose()时会发生这样的情况,即当垃圾收集器运行以从内存中释放对象时,这些资源将保留,直到调用终结器。如果你需要那些资源(或者当它们是Disposed()时会发生一些有趣的事情)那么你不想等待一段任意时间 - 一旦你完成它就调用Dispose()。 / p>
答案 1 :(得分:0)
这取决于_GetName()_
方法。并在_WebServiceClient()_
。
我们举个例子:
public class WebServiceClient : IDisposable
{
private static WebServiceClient viciousReference = null;
public WebServiceClient()
{
viciousReference = this;
}
~WebServiceClient()
{
Dispose();
}
public void Dispose()
{
// Standard Dispose implementation
}
}
如果您的对象实现了Dispose()
,请始终尝试自己调用它。不要只依赖垃圾收集器。