Dictionary в Visual Basic — это ассоциативная коллекция, которая позволяет хранить пары ключ-значение. В VB.NET для этого используется Dictionary(Of TKey, TValue) из пространства имён System.Collections.Generic.
Ранние версии Visual Basic были ограничены классическими коллекциями (Collection), которые поддерживали только строковые или числовые ключи без типизации. С появлением VB.NET и .NET Framework в коллекциях появился дженерик Dictionary, который сделал работу с ассоциативными данными безопаснее и быстрее.
Типичные ошибки при использовании Dictionary включают:
При работе с Dictionary критически важно:
ContainsKeyПример кода:
Dim dict As New Dictionary(Of String, Integer) dict("apples") = 10 ' Безопасная проверка перед обращением: If dict.ContainsKey("bananas") Then Console.WriteLine(dict("bananas")) Else Console.WriteLine("Ключ не найден!") End If
Ключевые особенности:
Какое исключение выбрасывается при попытке доступа к несуществующему ключу в Dictionary и как его избежать?
Ошибка: System.Collections.Generic.KeyNotFoundException. Нужно использовать метод ContainsKey для предотвращения этой ошибки.
Можно ли изменять ключи уже существующих элементов Dictionary?
Нельзя. Ключ после добавления изменить нельзя — можно только удалить элемент и добавить новый с другим ключом.
Чем отличается Dictionary от Hashtable в VB.NET?
Dictionary типобезопасен (generic), работает быстрее и не требует упаковки/распаковки значений. Hashtable старый и не рекомендуемый к использованию.
** Негативный кейс
Программист сохраняет статистику по продажам по городам через Dictionary, но не проверяет, есть ли город-ключ в коллекции перед обращением. Получает KeyNotFoundException, когда отчёт берётся по новому городу.
Плюсы:
Минусы:
** Позитивный кейс
Тот же отчёт, но при обращении к ключу всегда используется проверка ContainsKey, и если ключ отсутствует, возвращается 0 или выводится сообщение.
Плюсы:
Минусы: