将项添加到嵌套字典时编译错误

时间:2010-03-15 15:29:46

标签: vb.net

我正在尝试创建嵌套字典变量,如下所示,但是我得到编译错误,说明它需要“}”,我需要在我的嵌套字典中添加项目(第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)())

3 个答案:

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