我已經走遍了互聯網尋找一個解決這個問題,但空例外仍然存在。基本上,我試圖將值添加到嵌套字典時,出現System.NullReferenceException錯誤。嵌套字典System.NullReferenceException在VB.net
這是我的代碼。
Public Dict1 as New Dictionary(Of Integer, Dictionary(Of String, String))() 'Tried with and without()
Sub CreateDict(Length As Integer)
Dim key As Integer
Dim CmdName As String
Dim CmdValue As String
key = 0
CmdName = "UnusedCmd"
CmdValue = "NotAFolder,NotAFolder,NotAFolder,NotAFolder,NotAFolder,Read"
While key <= Length
Dim CmdDict As New Dictionary(Of String, String)
CmdDict.Add("Name", CmdName) 'Method 1 of Adding
CmdDict.Add("Command", CmdValue) 'Method 1 of Adding
'CmdDict("Name") = CmdName 'Method 2 of Adding Both seem to work as evidenced by msgbox
'CmdDict("Command") = CmdValue 'Method 2 of Adding Both seem to work as evidenced by msgbox
MsgBox(CmdDict("Name")) ' Returns UnusedCmd
MsgBox(CmdDict("Command"))' Returns NotAFolder,NotAFolder,NotAFolder,NotAFolder,NotAFolder,Read
MsgBox(key) 'Returns 1
Dict1.Add(key, CmdDict)
key = key + 1
CmdDict = Nothing 'Error Occurs whether or not this is commented out
End While
End Sub
注意此代碼是改編自我原來的項目,該項目是在VBA的Outlook 2016年我試圖重新適應這個代碼是一個Outlook插件。
我試圖用「=」替代「作爲」條款,我也試過
Dim CmdDict As Dictionary(Of String, String) = New Dictionary(Of String, String)
對於兩個字典但這並沒有工作。我已經嘗試了所有我能想到的/請找到幫助。
它可能是與它是一個公共的字典?我看到有人使用公開辯論,他們的解決辦法是添加新的我不得不做的事情,否則不會創建任何對象。
編輯:
我只是想一個普通的字典作爲一個公共變量,它也失敗了。所以它似乎與嵌套無關。我將繼續研究公共對象問題。
編輯2:
只是試圖加入Dict1公共類仍然沒有工作。
Public Class GlobalVariables
Public Shared Dict1 As Dictionary(Of Integer, Dictionary(Of String, String)) = New Dictionary(Of Integer, Dictionary(Of String, String))
End Class
這樣Dict1後進行了更新,GlobalVariables.Dict1
編輯3:
這段代碼是我根據我在Outlook VBA宏寫道:創建一個VSTO加載項中。我正在使用Visual Studio Community 2015. The location of the code is as follows
編輯4: 重複?我同意我認爲這是一個重複的答案,以及,但我不能在任何地方其他地方的答案是一個Sub內公衆創建對象移動到一個公共變量。但問題的其餘部分與其他人所認同的非常相似。
該代碼運行得很好......你究竟在哪裏得到異常......什麼行......堆棧跟蹤說什麼? –
的錯誤拋出該生產線是在Dict1.Add(鍵,CmdDict)不知道這是否會改變一切,但是這是正在運行的Outlook加載項裏內VSTO – Gibbs314
這意味着在第一行沒有被執行...其中創建你有這個代碼嗎? –