Visual Basic'te Dictionary, anahtar-değer çiftlerini depolamaya izin veren bir ilişkisel koleksiyondur. VB.NET'te bunun için Dictionary(Of TKey, TValue) kullanılır ve bu System.Collections.Generic ad alanındadır.
Eski sürümlerde Visual Basic sadece klasik koleksiyonlarla (Collection) sınırlıydı ve bunlar yalnızca dize veya sayısal anahtarları destekliyordu. VB.NET ve .NET Framework'ün ortaya çıkmasıyla birlikte koleksiyonlarda generic olan Dictionary kullanıma sunuldu ve bu, ilişkisel verilerle çalışmayı daha güvenli ve hızlı hale getirdi.
Dictionary kullanırken sıkça karşılaşılan hatalar arasında:
Dictionary ile çalışırken kritik öneme sahip olanlar:
ContainsKey metodu ile anahtarın varlığını kontrol etmekKod örneği:
Dim dict As New Dictionary(Of String, Integer) dict("elmalar") = 10 ' Erişim öncesi güvenli kontrol: If dict.ContainsKey("muzlar") Then Console.WriteLine(dict("muzlar")) Else Console.WriteLine("Anahtar bulunamadı!") End If
Temel özellikler:
Dictionary'de mevcut olmayan bir anahtara erişim sağlamaya çalıştığınızda hangi istisna fırlatılır ve bunu nasıl önleyebilirsiniz?
Hata: System.Collections.Generic.KeyNotFoundException. Bu hatayı önlemek için ContainsKey metodunu kullanmalısınız.
Zaten mevcut olan Dictionary öğelerinin anahtarlarını değiştirmek mümkün mü?
Hayır. Bir anahtar eklendikten sonra değiştirilemez; yalnızca öğe silinip yeni bir anahtar ile eklenebilir.
Dictionary ile Hashtable arasındaki farklar nelerdir?
Dictionary tür güvenliğidir (generic), daha hızlı çalışır ve değerlerin kutusunu açma/kapatma gerektirmez. Hashtable ise eski bir yöntemdir ve kullanılması önerilmez.
** Olumsuz Durum
Bir programcı, şehirler bazında satış istatistiklerini Dictionary aracılığıyla saklarken, erişimden önce şehir anahtarının koleksiyonda mevcut olup olmadığını kontrol etmedi. Yeni bir şehir için rapor alınırken KeyNotFoundException hatası aldı.
Artılar:
Eksiler:
** Olumlu Durum
Aynı rapor, ancak anahtara erişim sırasında her zaman ContainsKey kontrolü kullanıldığında ve anahtar mevcut değilse 0 döndürüldüğünde veya bir mesaj görüntülendiğinde.
Artılar:
Eksiler: