System.Net.NetworkCredential
没有Dispose
方法。正确处理使用此类创建的对象的最佳方法是什么?
詹姆斯NT
您可以在try的finally部分将对象引用设置为null。
var myCredential = new NetworkCredential();
try
{
//Do stuff here
}
finally
{
myCredential = null;
}
然而。NET垃圾回收应该在对象引用超出范围后立即标记它以进行回收。
如果一个对象没有实现IDisposable
,那么在使用完它后"处理"它的正确方法是让它超出范围。
IDisposable
被设计为允许对象清理它可能持有的任何非托管资源。如果对象只包含托管资源,那么就没有理由处理它;所有的东西都会被垃圾收集器清理掉。
来自MSDN:
此接口的主要用途是释放非托管资源。垃圾收集器自动释放分配给当不再使用托管对象时。然而,事实并非如此可以预测垃圾回收何时发生。此外垃圾收集器不知道诸如窗口句柄或打开的文件和流。
使用的Dispose方法该接口显式释放中的非托管资源与垃圾收集器结合使用。对象的使用者可以当不再需要对象时调用此方法。