C# Dictionary ve Hashtable Farkları

Bu yazıda .Net üzerinde yer alan koleksiyonlardan Dictionary ve Hashtable arasındaki farkları anlatıp C# ile göstermeye çalışacağım.

Önce sırasıyla bu 2 koleksiyon hakkında kısaca açıklama yapalım.

Dictionary ne işe yarar dersek, eklendiği elemanları key ve value şeklinde kaydetmemizi sağlayan bir sınıfdır.

Hashtable ne işe yarar dersek ise, yine aynı şekilde eklendiği elemanları key ve value şeklinde kaydetmemizi sağlar.

Görüldüğü gibi tanım olarak bakıldığında her ikisini de aynı tanımla açıklayabildiğimizi görüyoruz.

Buradaki temel fark ise, Dictionary oluştururken mutlaka veri tipini belirtiriz ve bu şekilde kullanırız.
Hashtable de ise veri tipi tanımlamak zorunda değiliz, burada her şey eklenebilir.

İkisi arasındaki temel fark budur diyebiliriz.

Bu bilginin dışında başka farkları da açıklamak gerekirse Dictionary’ler Generic(List dahil) yapıdadırlar, Hashtable ise Non-Generic(ArrayList dahil) yapıdadırlar.
Bu bilgiyi biraz açmak gerekirse, Generic yapılar çalışma zamanında(run time) gereksiz Cast yani Boxing ve Unboxing kullanılmasını önlerler ve bu da performans sağlar, aynı zamanda derleme anında(compile time) Type Safe yani tip güvenli değişken kullanılmasını zorlayarak çalışma zamanında oluşabilmesi muhtemel tip dönüşümü hatalarını önlerler.
Non-Generic yapılar ise bu özelliklere sahip değildir ve bu yüzden pek tercih edilmezler.

Kullanımları hakkında da çok kısa bir kod örneği göstermek gerekirse aşağıdaki yapı basitçe bir Dictionary örneğidir.

Dictionary<int, string> dictionarySet = new Dictionary<int, string>();
dictionarySet.Add(1, "Ad");
dictionarySet.Add(2, "Soyad");
dictionarySet.Add(3, "Unvan");
foreach (KeyValuePair<int, string> item in dictionarySet)
{
    Console.WriteLine("Id : " + item.Key + ", Değer : " + item.Value);
}

 

Hashtable için de aşağıdaki kod örneği örnek olarak gösterilebilir.

Hashtable hashTableSet = new Hashtable();
hashTableSet.Add("A", "Test 1");
hashTableSet.Add("B", true);
hashTableSet.Add("C", 1);
Console.Write("Değer : {0}, {1}" , hashTableSet["A"], hashTableSet["B"]);

 

Çok kısaca Dictionary ve Hashtable arasındaki farkı anlatıp, birer kod örneğiyle yapılarını göstermeye çalıştım, umarım faydalı olmuştur.
Herhangi bir sorunuz olursa yorumlar bölümüne yazabilirsiniz.
 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir