0

下面的 if 语句永远不会解析为true找不到注册表项。我在这里想念什么?

if ((Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == "0") ||
    (Convert.ToString(Registry.GetValue(key, "EnableLinkedConnections", "")) == null))
4

4 回答 4

8

根据MSDN Docs,您传入的第三个参数是未找到密钥时返回给您的值。

由于您正在指定“”(String.Empty) - 这是您应该检查的值,而不是 null 或“0”。

于 2012-11-21T15:55:28.570 回答
5

Convert.ToString on null 作为对象返回“”。试试string.IsNullOrEmpty()

于 2012-11-21T15:53:16.617 回答
2

因为 Registry.GetValue 返回一个 null 对象,该对象 Convert.ToString() 转换为您不检查的空字符串(参见此处)。试试这个:

object value = Registry.GetValue(key, "EnableLinkedConnections", "");
if (value != null)
{
    string text = Convert.ToString(value);
} 
于 2012-11-21T15:58:38.387 回答
0

根据经验,请在 Convert.ToString 之前检查它是否为空,在调用两次相同的方法之前将其存储在对象中,这将提高性能。

object regystryValue = Registry.GetValue(key, "EnableLinkedConnections", "");

if(regystryValue != null && regystryValue.ToString() =="0"){
//do things
}
于 2012-11-21T15:58:20.200 回答