Dictionary w Visual Basic to kolekcja asocjacyjna, która pozwala na przechowywanie par klucz-wartość. W VB.NET korzysta się z Dictionary(Of TKey, TValue) z przestrzeni nazw System.Collections.Generic.
Wczesne wersje Visual Basic były ograniczone do klasycznych kolekcji (Collection), które obsługiwały tylko klucze tekstowe lub numeryczne bez typizacji. Z pojawieniem się VB.NET i .NET Framework w kolekcjach wprowadzono generyczny Dictionary, co uczyniło pracę z danymi asocjacyjnymi bezpieczniejszą i szybszą.
Typowe błędy przy używaniu Dictionary obejmują:
Przy pracy z Dictionary kluczowe jest:
ContainsKeyPrzykład kodu:
Dim dict As New Dictionary(Of String, Integer) dict("jabłka") = 10 ' Bezpieczne sprawdzenie przed odwołaniem: If dict.ContainsKey("banany") Then Console.WriteLine(dict("banany")) Else Console.WriteLine("Klucz nie znaleziony!") End If
Cechy kluczowe:
Jakie wyjątki są rzucane przy próbie dostępu do nieistniejącego klucza w Dictionary i jak ich uniknąć?
Błąd: System.Collections.Generic.KeyNotFoundException. Należy użyć metody ContainsKey, aby uniknąć tego błędu.
Czy można zmieniać klucze już istniejących elementów Dictionary?
Nie. Klucza po dodaniu nie można zmieniać — można jedynie usunąć element i dodać nowy z innym kluczem.
Czym różni się Dictionary od Hashtable w VB.NET?
Dictionary jest bezpieczny typowo (generics), działa szybciej i nie wymaga pakowania/rozpakowywania wartości. Hashtable jest starym i niewskazanym do użycia krajem.
** Negatywny przypadek
Programista zapisuje statystyki sprzedaży według miast za pomocą Dictionary, ale nie sprawdza, czy klucz miasta istnieje w kolekcji przed odwołaniem. Otrzymuje KeyNotFoundException, gdy raport jest pobierany dla nowego miasta.
Zalety:
Wady:
** Pozytywny przypadek
Ten sam raport, ale przy odwołaniu do klucza zawsze używa się sprawdzenia ContainsKey, a jeśli klucz jest nieobecny, zwracane jest 0 lub wyświetlane jest powiadomienie.
Zalety:
Wady: