C# .NET 3.5 Dispose注册表项
我有以下代码:C# .NET 3.5 Dispose注册表项,c#,dispose,static-analysis,registrykey,C#,Dispose,Static Analysis,Registrykey,我有以下代码: RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey); 我正在我的代码上运行一个静态分析工具,它给了我一个缺陷,即我从medthod返回时没有处理installKey。我知道您可以在.NET 4.0或更高版本中对RegistryKey调用Dispose(),但我的代码在.NET 3.5上运行 有人知道处理这个注册表项并使我的静态分析工具满意的最佳方法吗 当然可以在3.5版中处理! 见文件 使用
RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey);
我正在我的代码上运行一个静态分析工具,它给了我一个缺陷,即我从medthod返回时没有处理installKey。我知道您可以在.NET 4.0或更高版本中对RegistryKey调用Dispose(),但我的代码在.NET 3.5上运行
有人知道处理这个注册表项并使我的静态分析工具满意的最佳方法吗 当然可以在3.5版中处理! 见文件
使用
using
块,如MSDN示例中所示,或者像在任何其他IDisposable对象中一样简单地调用Dispose()。您应该将代码包装在using
块中,该块将隐式地为您调用Dispose
。目前还不清楚您使用的是什么静态分析工具,但希望它能够理解使用的:
using (RegistryKey installKey = Registry.LocalMachine.OpenSubKey(installKey))
{
// Your code here
}
请注意,您也可以显式调用Dispose
,但首先需要将RegistryKey
强制转换为IDisposable
:
((IDisposable)installKey).Dispose()
您不能在.NET 3.5中对其调用Dispose(),您会遇到以下错误:错误“Microsoft.Win32.RegistryKey”不包含“Dispose”的定义,并且找不到接受“Microsoft.Win32.RegistryKey”类型的第一个参数的扩展方法“Dispose”(您缺少using指令或程序集引用吗?)。抱歉,Jens,董先生已经向我解释了你如何打电话给我。@Jim,谢谢你的提示。但是,我不理解为.NET Framework 3.5版本显式编写的文档(请参阅链接),并声明RegistryKey具有“显式接口实现”IDisposable.Dispose。我的误解在哪里?在3.5中是RegistryKey.close()
而不是dispose