System.Net.NetworkCredential
没有Dispose
方法。处理使用此类创建的对象的最佳方法是什么?
JamesNT
答案 0 :(得分:2)
您可以在try的finally部分中将对象引用设置为null。
var myCredential = new NetworkCredential();
try
{
//Do stuff here
}
finally
{
myCredential = null;
}
但是,.NET垃圾收集应该在收集的对象引用超出范围时立即标记。
答案 1 :(得分:1)
如果一个对象没有实现IDisposable
,那么正确的方式来处理"处理"当你使用它时,就是让它超出范围。
IDisposable
旨在允许对象清理它可能持有的任何非托管资源。如果对象只包含托管资源,则没有理由将其丢弃;一切都将被垃圾收集器清理干净。
来自MSDN:
此接口的主要用途是释放非托管资源。 垃圾收集器自动释放分配给的内存 不再使用该对象时的托管对象。但事实并非如此 可以预测何时会发生垃圾收集。此外, 垃圾收集器不了解非托管资源,例如 窗口句柄,或打开文件和流。
使用Dispose方法 此接口显式释放非托管资源 与垃圾收集器结合。对象的消费者可以 当不再需要该对象时调用此方法。