使用“词典”时如何解决错误

时间:2013-04-08 15:33:40

标签: vb.net dictionary

我正在创建一个类来处理我的应用程序的注册表项,但是我早期遇到了一些问题。

在下面,它应该采用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

2 个答案:

答案 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)