将未分配的对象自动处理变量

时间:2013-01-31 16:14:39

标签: c# web-services

所以我们假设我们有一些像这个Web服务客户端对象

var myname = new WebServiceClient().GetName ( ) ; 

此对象(Web服务客户端())会发生什么情况,它会自动处理或留在内存中。

2 个答案:

答案 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(),请始终尝试自己调用它。不要只依赖垃圾收集器。