2009-06-07 5 views
0

Diese Frage bezieht sich auf diese Multidimensional Associative Array in VB.NETasp.net vb.net Personenklasse und Wörterbuch

bekommen den folgenden Fehler.

System.ArgumentException: Ein Element mit demselben Schlüssel wurde bereits hinzugefügt. Linie 103: AdInsured.Add (dbread.Item ("Fullname"), New Person (dbread.Item ("Fullname"), 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 

Antwort

2

Der Schlüssel in einem Dictionary muss eindeutig sein. Wenn Sie einen Gegenstand mit dem Schlüssel "John" haben und versuchen, einen weiteren mit demselben Schlüssel hinzuzufügen, erhalten Sie diese Ausnahme. Sie müssen sicherstellen, dass jedes Element im Wörterbuch einen eindeutigen Schlüssel erhält. Sie können prüfen, ob ein Schlüssel bereits im Wörterbuch verwendet wird:

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

Wenn zu einem Wörterbuch hinzufügen, das erste Element wäre, den Schlüssel (ein String in diesem Fall) hinzugefügt - das muss in diesem Wörterbuch eindeutig sein sonst Dieser Fehler wird ausgelöst.

Ich würde auch diese Erklärung des Wörterbuchs verwenden sonst könnte man eine Reihe von Wörter

Dim als neue Generic.Dictionary adinsured bekommen (String, Person)

dh, wenn Sie diese hinzugefügt haben:

Dim adinsured2 als neuer Generic.Dictionary (String, String) Adinsured2.Add ("Fred", "Fred") Adinsured2.Add ("Fred", "Fred")

Diese werfen würde dieser Fehler jedoch würde dies

Dim adinsured2 als neuer Generic.Dictionary in Ordnung sein (String, String) Adinsured2.Add ("Bert", "Fred") Adinsured2.Add ("Fred", "Fred")