正如标题所说:
TcpClient如何实现IDisposable并且没有公共的Dispose方法?
答案 0 :(得分:11)
使用explicit interface implementation。而不是
public void Dispose()
{
...
}
它会有
void IDisposable.Dispose()
{
...
}
其他各种类型的人这样做;有时它是不必要的(例如支持IEnumerable.GetEnumerator
和IEnumerable<T>.GetEnumerator
),有时它是在已知具体类型时公开更合适的API。
答案 1 :(得分:3)
见explicit interface implementation
。您需要将TcpClient
的实例显式转换为IDisposable
,或将其包装在using() {...}
块中。请注意,明确实现IDisposable
的类通常会提供公共Close()
方法