Hashtable'da Key'ler ve Value'lar birçok koleksiyonda olduğu gibi object tipindendir.
Hashtable içerisinde bulunan her üye 'DictionaryEntry' tipindendir.DictionaryEntry'ler, Key<->Value çiftlerinden oluşan tiplerdir.
Hashtable koleksiyonuna üye eklemek için .Add() methodunu kullanırız. Add() methodu çalışmak için object tipinden iki parametre ister. Bu değerlerden ilki key, ikincisi value olarak kullanılır. Eklenmek istenen Key ve Value çiftinden DictionaryEntry oluşturulur. DictionaryEntry hazırlandıktan sonra koleksiyona dahil edilir. Value olarak gönderdiğimiz değer koleksiyonda asıl saklamak istediğimiz veridir. Key değeri ise bu veriye ulaşmak istediğimizde kullanmamız gereken anahtar kelimedir.
Object tipinden olan key değeri unique (eşsiz) olmalıdır, koleksiyonda varolan bir key kullanarak yeni bir üye eklemesi yapmak istediğimizde Exception (ArgumentException) alırız. Key değeri olarak null kullanmak istediğimizde de yine Exception (ArgumentNullException) ile karşılaşırız. Key olarak null kullanamayız fakat value null olabilir. Key değeri tanımlandıktan sonra tekrar değiştirilmesi mümkün değildir, fakat herhangi bir üyenin Value'su daha sonra değiştirilebilir.
Hashtable, verileri okumak istediğimizde en hızlı biçimde ulaşabileceğimiz şekilde saklar. Bu bize okuma sırasında performans olarak geri döner. Okuma performansını artırmak istediğimizde Hashtable koleksiyonunu tercih etmeliyiz.
Hashtable koleksiyon nesnesini nasıl örnekleyebilirim?
Bunun için öncelikle using System.Collections; ifadesini kod sayfamızın başına eklemeliyiz. Sonrasında aşağıdaki gibi nesnemizi örnekleyebiliriz.
Hashtable ht = new Hashtable(); |
Hashtable koleksiyonuna nasıl üye ekleyebilirim?
.Add() methodunu aşağıdaki gibi kullanarak koleksiyona bir key<->value çifti ekleyebilirsiniz.
ht.Add(keyDegiskeni,valueDegiskeni); |
Hashtable'ın istediğim bir üyesini nasıl okuyabilirim?
Hashtable değişkeni üzerinden indexleyici yardımıyla key'i girip value okunabilir.
object valueDegeri = ht[keyDegeri]; |
Hashtable'ın istediğim bir üyesinin value'sunu nasıl değiştirebilirim?
Hashtable değişkeni üzerinden indexleyici yardımıyla key'i verip bu key üzerine yeni value ataması yapılabilir.
ht[keyDegeri] = valueDegeri; |
Hashtable üyelerini tek tek ele alıp işlemek için ne yapmalıyım?
Hashtable içerisindeki her üye DictionaryEntry tipindendir. Bir foreach döngüsü ile üyeler arasında gezerken eldeki üye olan DictionaryEntry üzerinden üyenin key ve value değerlerine ulaşılabilir.
foreach (DictionaryEntry entry in ht) { Console.WriteLine(entry.Key + " / " + entry.Value); } |
foreach (Object keyDegeri in ht.Keys) { Console.WriteLine(ht[keyDegeri].ToString());} |
Hashtable'dan üye çıkartmak için ne yapmalıyım?
.Remove() methodunu kullanarak Hashtable içerisinden bir nesnenin kaldırılmasını sağlayabiliriz. .Remove() methodunu kullanırken, koleksiyondan çıkartmak istediğimiz üyenin key değerini methoda parametre olarak göndermemiz yeterli olacaktır.
ht.Remove(keyDegeri); |
Hashtable içerisindeki eleman sayısını nasıl elde edebilirim?
Hashtable içerisindeki .Count özelliğini okuyarak eleman sayısını elde edebiliriz.
Console.WriteLine(ht.Count); |
Koleksiyon içerisinde varolan bir key ile üye eklemek istediğimde neden exception alırım?
Varolan bir key'i tekrar ekleyemeyiz çünkü verileri okumak istediğimizde index olarak keyleri kullanacağız. Bu durumda içeride aynı key den 2 tane olursa, biz value'ya ulaşmak için key'i verdiğimizde hangi value'nun döndürüleceğine karar verilemez. Böyle bir sorunla karşılaşmamak için aynı key'in 2 kez girilmesi Exception ile engellenmiştir.