我正在尝试使用此代码使用一些注册表信息填充listview。
private void button1_Click(object sender, EventArgs e)
{
ListViewItem lvItem = null;
RegistryKey uninstallKey = Registry.LocalMachine.OpenSubKey(UninstallPath);
if (uninstallKey != null)
foreach (var subKey in uninstallKey.GetSubKeyNames())
{
using (RegistryKey key = uninstallKey.OpenSubKey(subKey))
{
if (key != null)
{
lvItem =
new ListViewItem(key.GetValue("DisplayName").ToString());
lvItem.SubItems.Add(key.GetValue("Publisher").ToString());
}
}
listView1.Items.Add(lvItem);
}
}
}
调试应用程序时一切正常。在断点到达此处之前没有任何空值
lvItem = new ListViewItem(key.GetValue("DisplayName").ToString());
lvItem.SubItems.Add(key.GetValue("Publisher").ToString());
应用程序崩溃并给我空指针异常。我知道这是一个愚蠢的问题,但我真的不明白它怎么可能是空的。
答案 0 :(得分:2)
请勿使用key.GetValue("Publisher").ToString()
,而是使用(string)key.GetValue("Publisher")
。这是因为GetValue
可以返回null,如果你在null上尝试.ToString()
,你将得到该异常。