我正在尝试创建嵌套字典变量,如下所示,但是我得到编译错误,说明它需要“}”,我需要在我的嵌套字典中添加项目(第2行)。
我在这里错过了什么?谢谢。
Dim myNestedDictionary As Dictionary(Of String, Dictionary(Of String, Integer)) = New Dictionary(Of String, Dictionary(Of String, Integer))()
myNestedDictionary.Add("A", New Dictionary("A", 4)())
答案 0 :(得分:1)
添加记录时,您需要指定要创建的字典类型:
myNestedDictionary.Add("A", New Dictionary(Of String, Integer))
或以其他方式传递现有的Dictionary(Of String,Integer)作为内部字典参数(将键/值对添加到外部字典时)。
(顺便说一句,你的外部字典是一个字典,其键是字符串,值是字典(字符串,整数),这真的是你想要的吗?)
答案 1 :(得分:1)
在VS 2008和.net 3.5中,您无法在一行中声明和初始化Dictionary,因此您必须这样做:
Dim myNestedDictionary As New Dictionary(Of String, Dictionary(Of String, Integer))()
Dim lTempDict As New Dictionary(Of String, Integer)
lTempDict.Add("A", 4)
myNestedDictionary.Add("A", lTempDict)
要检索项目,请使用以下内容:
Dim lDictionaryForA As Dictionary(Of String, Integer) = myNestedDictionary.Item("A")
Dim lValueForA As Integer = lDictionaryForA.Item("A")
lValueForA
中的值应为4.
答案 2 :(得分:1)
在C#中你可以这样做:
var myNestedDictionary = new Dictionary<string, Dictionary<string, int>>() {{ "A", new Dictionary<string, int>() { { "A", 4 } } }};
您也可以使用From关键字在VB 2010中执行此操作,但它不能在VS 2008中编译。无论您使用哪个.NET Framework,它都将在VB 2010中编译。我试过2.0,3.5和4.0。
Dim myNestedDictionary = New Dictionary(Of String, Dictionary(Of String, Integer))() From {{"A", New Dictionary(Of String, Integer) From {{"A", 4}}}}