1

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

在下面,它应该获取 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
4

2 回答 2

3

你没有初始化你的RegKeys对象

尝试更改此行:

Public RegKeys As Dictionary(Of String, String)

对此:

Public RegKeys As New Dictionary(Of String, String)

这将确保在创建类时初始化字典

于 2013-04-08T15:42:51.637 回答
1

这条线

Public RegKeys As Dictionary(Of String, String)

声明了 Dictionary 类型的变量(引用类型),但该变量不是 Dictionary 的实例。要成为有效实例,您需要使用 new 实例化

Public RegKeys = new Dictionary(Of String, String)
于 2013-04-08T15:43:45.867 回答