Das Dictionary in Visual Basic ist eine assoziative Sammlung, die es ermöglicht, Schlüssel-Wert-Paare zu speichern. In VB.NET wird dafür Dictionary(Of TKey, TValue) aus dem Namensraum System.Collections.Generic verwendet.
Frühere Versionen von Visual Basic waren auf klassische Sammlungen (Collection) beschränkt, die nur string- oder numerische Schlüssel ohne Typisierung unterstützten. Mit dem Erscheinen von VB.NET und dem .NET Framework kam die generische Dictionary-Sammlung, die die Arbeit mit assoziativen Daten sicherer und schneller machte.
Typische Fehler bei der Verwendung von Dictionary sind:
Beim Arbeiten mit Dictionary ist es äußerst wichtig:
ContainsKey zu überprüfenBeispielcode:
Dim dict As New Dictionary(Of String, Integer) dict("apples") = 10 ' Sichere Überprüfung vor dem Zugriff: If dict.ContainsKey("bananas") Then Console.WriteLine(dict("bananas")) Else Console.WriteLine("Schlüssel nicht gefunden!") End If
Wichtige Merkmale:
Welche Ausnahme wird ausgelöst, wenn man versucht, auf einen nicht existierenden Schlüssel im Dictionary zuzugreifen, und wie kann man das vermeiden?
Fehler: System.Collections.Generic.KeyNotFoundException. Man sollte die Methode ContainsKey verwenden, um diesen Fehler zu vermeiden.
Kann man die Schlüssel bereits existierender Elemente im Dictionary ändern?
Nein. Ein Schlüssel kann nach der Hinzufügung nicht geändert werden – man kann nur das Element entfernen und ein neues mit einem anderen Schlüssel hinzufügen.
Was unterscheidet Dictionary von Hashtable in VB.NET?
Das Dictionary ist typensicher (generic), arbeitet schneller und erfordert keine Verpackung/Entpackung von Werten. Hashtable ist älter und wird nicht empfohlen.
** Negativer Fall
Ein Programmierer speichert Verkaufsstatistiken für Städte über ein Dictionary, überprüft jedoch nicht, ob der Stadt-Schlüssel in der Sammlung vorhanden ist, bevor er darauf zugreift. Er erhält eine KeyNotFoundException, wenn der Bericht für eine neue Stadt erstellt wird.
Vorteile:
Nachteile:
** Positiver Fall
Der gleiche Bericht, aber beim Zugriff auf den Schlüssel wird immer die ContainsKey-Überprüfung verwendet, und wenn der Schlüssel fehlt, wird 0 zurückgegeben oder eine Nachricht ausgegeben.
Vorteile:
Nachteile: