下面的 if 语句永远不会解析为true
找不到注册表项。我在这里想念什么?
if ((Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == "0") ||
(Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == null))
下面的 if 语句永远不会解析为true
找不到注册表项。我在这里想念什么?
if ((Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == "0") ||
(Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == null))
根据MSDN Docs,您传入的第三个参数是未找到密钥时返回给您的值。
由于您正在指定“”(String.Empty) - 这是您应该检查的值,而不是 null 或“0”。
Convert.ToString on null 作为对象返回“”。试试string.IsNullOrEmpty()
。
因为 Registry.GetValue 返回一个 null 对象,该对象 Convert.ToString() 转换为您不检查的空字符串(参见此处)。试试这个:
object value = Registry.GetValue(key, "EnableLinkedConnections", "");
if (value != null)
{
string text = Convert.ToString(value);
}
根据经验,请在 Convert.ToString 之前检查它是否为空,在调用两次相同的方法之前将其存储在对象中,这将提高性能。
object regystryValue = Registry.GetValue(key, "EnableLinkedConnections", "");
if(regystryValue != null && regystryValue.ToString() =="0"){
//do things
}