我想使用 using 语句,但如果它应该指向的对象不存在,则可能需要更改我“使用”的变量的值。
我想到了这样的事情(对于注册表访问和 32/64 窗口 - 尽管这是我当前的用例,但这是一个普遍问题):
using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MS\Platform"))
{
if (key == null)
key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\MS\Platform");
// use key
}
以上代码无法编译:
error CS1656: Cannot assign to 'key' because it is a 'using variable'
我可以通过不使用 using 而是 try/catch/finally 和/或在使用之前测试注册表项是否存在来解决这个问题。
有没有一种方法可以继续使用 using,然后处理正确的对象?
最佳答案
也许 Null 合并?
using (var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\MS\Platform") ?? Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\MS\Platform"))
{
// use key
}
关于c# - 使用更改使用变量的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36602695/