c#System.Net.NetworkCredential

时间:2017-01-24 14:10:10

标签: c# idisposable networkcredentials

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

JamesNT

2 个答案:

答案 0 :(得分:2)

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

var myCredential = new NetworkCredential();

try
{
    //Do stuff here
}
finally
{
    myCredential = null;
}

但是,.NET垃圾收集应该在收集的对象引用超出范围时立即标记。

答案 1 :(得分:1)

如果一个对象没有实现IDisposable,那么正确的方式来处理"处理"当你使用它时,就是让它超出范围。

IDisposable旨在允许对象清理它可能持有的任何非托管资源。如果对象只包含托管资源,则没有理由将其丢弃;一切都将被垃圾收集器清理干净。

来自MSDN

  

此接口的主要用途是释放非托管资源。   垃圾收集器自动释放分配给的内存   不再使用该对象时的托管对象。但事实并非如此   可以预测何时会发生垃圾收集。此外,   垃圾收集器不了解非托管资源,例如   窗口句柄,或打开文件和流。

     

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