1

したがって、このwebsericeclientオブジェクトのようなものがあるとしましょう

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

このオブジェクト(WebServiceClient())は、自動的に破棄されるか、メモリに残ります。

4

2 に答える 2

1

「破棄」(IDisposable.Dispose()の呼び出し)はメモリとは何の関係もありません。これは、ファイルやデータベースのハンドルなどの管理されていないリソースを解放することと関係があります。

Dispose()を呼び出さないと、ガベージコレクターが実行されてオブジェクトがメモリから解放されるときにファイナライザーが呼び出されるまで、これらのリソースが残ります。これらのリソースが必要な場合(または、Disposed()で何か面白いことが起こる場合)、任意の期間待機する必要はありません。終了したらすぐにDispose()を呼び出します。

于 2013-01-31T16:19:41.157 に答える
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()、常に自分で呼び出すようにしてください。ガベージコレクターだけに頼らないでください。

于 2013-01-31T16:19:40.333 に答える