2009-06-07 8 views
0

この質問は関連していますMultidimensional Associative Array in VB.NETasp.net vb.net人のクラスと辞書

次のエラーが発生します。

System.ArgumentException:同じキーを持つ項目が既に追加されています。 ライン103:AdInsured.Add(dbread.Item( "フルネーム")、新しい人(dbread.Item( "フルネーム")、GetAge(dbread.Item( "dateOfBirthの"))))

Dim AdInsured As New Dictionary(Of String, Person)() 

    Do While dbread.HasRows 
     AdInsured.Add(dbread.Item("FullName"), New Person(dbread.Item("FullName"), GetAge(dbread.Item("DateOfBirth")))) 
    Loop 

答えて

2

辞書のキーは一意でなければなりません。あなたがキー "John"を持つアイテムを持っていて、同じキーでもう1つを追加しようとすると、この例外が発生します。辞書の各項目に一意のキーが指定されていることを確認する必要があります。あなたは、キーがすでに辞書に使用されているかどうかを確認することができます

If AdInsured.ContainsKey(dbread.Item("FullName")) Then 
    ' The dictionary already has an item with this key ' 
Else 
    ' You can safely add the new item to the list ' 
    AdInsured.Add(dbread.Item("FullName"), New Person(dbread.Item("FullName"), GetAge(dbread.Item("DateOfBirth")))) 
End If 
0

辞書に追加する場合、追加された最初の項目はキー(この場合は文字列)になる - これは、辞書内で一意である必要がありそうこのエラーがスローされます。

私もそうでなければ、DIMは(文字列、個人の)新しいGeneric.Dictionaryとしてadinsured

辞書の配列を得ることができ、辞書のこの宣言を使用することになり

あなたは追加すなわち場合は、このでした:

をこれは投げるだろう(文字列、列の)新しいGeneric.Dictionary Adinsured2.Add( "フレッド"、 "フレッド") Adinsured2.Add( "フレッド"、 "フレッド")

として

薄暗いadinsured2このエラーは、しかし、これは Adinsured2.Add( "バート"、 "フレッド") Adinsured2.Add( "フレッド"、 "フレッド"(文字列、列の)新しいGeneric.Dictionaryなど細かい

薄暗いadinsured2だろう)