c# System.Net.NetworkCredential



System.Net.NetworkCredential没有Dispose方法。正确处理使用此类创建的对象的最佳方法是什么?

詹姆斯NT

您可以在try的finally部分将对象引用设置为null。

var myCredential = new NetworkCredential();
try
{
//Do stuff here
}
finally
{
myCredential = null;
}

然而。NET垃圾回收应该在对象引用超出范围后立即标记它以进行回收。

如果一个对象没有实现IDisposable,那么在使用完它后"处理"它的正确方法是让它超出范围。

IDisposable被设计为允许对象清理它可能持有的任何非托管资源。如果对象只包含托管资源,那么就没有理由处理它;所有的东西都会被垃圾收集器清理掉。

来自MSDN:

此接口的主要用途是释放非托管资源。垃圾收集器自动释放分配给当不再使用托管对象时。然而,事实并非如此可以预测垃圾回收何时发生。此外垃圾收集器不知道诸如窗口句柄或打开的文件和流。

使用的Dispose方法该接口显式释放中的非托管资源与垃圾收集器结合使用。对象的使用者可以当不再需要对象时调用此方法。

相关内容

  • 没有找到相关文章

最新更新