Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET 3.5 Dispose注册表项_C#_Dispose_Static Analysis_Registrykey - Fatal编程技术网

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