.net TcpClient如何实现IDisposable而不具有公共Dispose方法?
正如标题所说: TcpClient如何实现IDisposable而不具有公共处置方法?。而不是.net TcpClient如何实现IDisposable而不具有公共Dispose方法?,.net,idisposable,tcpclient,.net,Idisposable,Tcpclient,正如标题所说: TcpClient如何实现IDisposable而不具有公共处置方法?。而不是 public void Dispose() { ... } 本来会的 void IDisposable.Dispose() { ... } 其他各种类型都这样做;有时是出于必要(例如,支持IEnumerable.GetEnumerator和IEnumerable.GetEnumerator),有时是在已知具体类型时公开更合适的API。请参阅。您需要显式地将TcpClient的实例强
public void Dispose()
{
...
}
本来会的
void IDisposable.Dispose()
{
...
}
其他各种类型都这样做;有时是出于必要(例如,支持
IEnumerable.GetEnumerator
和IEnumerable.GetEnumerator
),有时是在已知具体类型时公开更合适的API。请参阅。您需要显式地将TcpClient
的实例强制转换为IDisposable
,或者使用(){…}块将其包装在中。请注意,显式实现IDisposable
的类通常会提供一个publicClose()
方法,而不是当我使用intellisense来体验一个不熟悉的接口时(我知道可能很糟糕),这是我最沮丧的事情之一,因为几乎没有迹象表明使用语句是合适的。说到使用
,我一生中从未遇到过一个局部可支配变量。我所有的一次性用品都是会员。所以我对所有的使用
愤怒感到困惑。@CannibalSmith:使用
取代了将他们保留为成员的做法,因为这些事情实际上只与使用
领域相关。它的用途之一是打开数据库或网络连接,执行需要执行的操作,然后自动关闭。那么在这种情况下,建议如何正确处理它?通过显式地将Dispose()方法强制转换为IDisposable,或者通过调用TcpClient.Close()?@KFL:您可以使用using
语句来调用Dispose()方法,这通常是最好的选择。如果不能使用using
语句,则调用Close
即可。