我正在创建一个类来处理我的应用程序的注册表项,但是我早期遇到了一些问题。
在下面,它应该采用SubKey的所有键/值并将它们添加到Dictonary
。注释掉的消息框正确显示了键和值,但每次运行该函数时,下面的行都会生成错误A first chance exception of type 'System.NullReferenceException'
。
由于注册表项本身似乎很好,我认为这与我使用RegKeys Dictonary
的方式有关。如果有人可以看一看并建议我会感激不尽。感谢。
这就是我开始上课的方式(我还没有尝试过其他任何事情) -
Private Sub getMyRegSettings()
Dim ServerPing As RegistryKey = Registry.CurrentUser.OpenSubKey("ServerPing")
Dim Servers As RegistryKey = ServerPing.OpenSubKey("Servers")
Dim MyRegistry As New MyRegistry(Servers)
Dim RegKeys As Dictionary(Of String, String) = MyRegistry.RegKeys
End Sub
这是让我有些麻烦的班级 -
Public Class MyRegistry
Public RegKeys As Dictionary(Of String, String)
Public Sub New(SubKey As RegistryKey)
get_registry_keys(SubKey)
End Sub
Private Sub get_registry_keys(SubKey As RegistryKey)
' Print the information from the Test9999 subkey.
For Each valueName As String In SubKey.GetValueNames() ' Error occurs here
'MsgBox("Key: " & valueName & vbCrLf & "Value: " & SubKey.GetValue(valueName))
RegKeys(valueName) = SubKey.GetValue(valueName).ToString()
Next valueName
End Sub
End Class
答案 0 :(得分:3)
您尚未初始化RegKeys
对象
尝试更改此行:
Public RegKeys As Dictionary(Of String, String)
到此:
Public RegKeys As New Dictionary(Of String, String)
这将确保在创建类时初始化字典
答案 1 :(得分:1)
这一行
Public RegKeys As Dictionary(Of String, String)
声明Dictionary类型的变量(引用类型),但此变量不是Dictionary的实例。要成为有效的实例,您需要使用新的
进行实例化Public RegKeys = new Dictionary(Of String, String)