当找不到注册表项时,以下if语句永远不会解析为true
。我在这里缺少什么?
if ((Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == "0") ||
(Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == null))
答案 0 :(得分:8)
根据MSDN Docs,您传入的第三个参数是未找到密钥时返回给您的值。
因为您指定了“”(String.Empty) - 这是您应该检查的值,而不是null或“0”。
答案 1 :(得分:5)
当对象返回“”时,Convert.ToString为null。试试string.IsNullOrEmpty()
。
答案 2 :(得分:2)
因为Registry.GetValue返回一个null对象,Convert.ToString()将转换为您未检查的空字符串(请参阅here)。试试这个:
object value = Registry.GetValue(key, "EnableLinkedConnections", "");
if (value != null)
{
string text = Convert.ToString(value);
}
答案 3 :(得分:0)
根据经验,请在Convert.ToString之前检查它是否为null,将它存储在对象中,然后再调用两次相同的方法,这样可以提高性能。
object regystryValue = Registry.GetValue(key, "EnableLinkedConnections", "");
if(regystryValue != null && regystryValue.ToString() =="0"){
//do things
}