15

タイトルが言うように:

TcpClient はどのように IDisposable を実装し、パブリック Dispose メソッドを持たないことができますか?

4

2 に答える 2

11

明示的なインターフェイスの実装を使用する。それ以外の

public void Dispose()
{
    ...
}

それは持っているだろう

void IDisposable.Dispose()
{
    ...
}

他のさまざまなタイプがこれを行います。場合によっては ( と のサポートIEnumerable.GetEnumeratorなどIEnumerable<T>.GetEnumerator) 必要がない場合もあれば、具象型がわかっている場合に、より適切な API を公開する場合もあります。

于 2010-02-24T11:27:33.563 に答える
3

を参照してくださいexplicit interface implementationTcpClientのインスタンスを明示的にtoにキャストするか、ブロックIDisposableでラップする必要があります。using() {...}明示的に実装するクラスは、多くの場合、代わりにIDisposableパブリック メソッドを提供することに注意してください。Close()

于 2010-02-24T11:30:47.597 に答える