Serdar YILMAZ
Bizimkisi Bir “Bug” Hikayesi...
Serdivan/Sakarya

Etiket 'C# IDictionaryEnumerator'

C# – Numaralandırıcı

dotnetBir koleksiyonda bulunan elemanların her birini görüntülemek için foreach döngüsü yerine Numaralandırıcı kullanabiliriz. Her ne kadar foreach döngüsü daha kullanışlı olsa da Numaranlandırıcıyı tercih etmemiz gereken durumlar olabilir.

Koleksiyon sınıflarının her birinde bulunan GetEnumerator() metodu ile bir Numaralandırıcı nesnesi elde edebiliriz. Elde etmiş olduğumuz nesnenin referansını; tercih etmiş olduğumuz koleksiyon sınıfına bağlı olarak IEnumerator veya IDictionaryEnumerator arayüzlerinde tutmaktayız.

IEnumerator Arayüzü

ArrayListQueue, Stack gibi tekil öğeleri tutan koleksiyon sınıflarında Numaralandırıcı, IEnumerator arayüzünü uygulamaktadır. IEnumerator’da MoveNext() metodu, Reset() metodu ve Current özelliği bulunmaktadır.

  1. Current Özelliği
    O an Numaralandırılmakta olan elemanı döndürmektedir. Salt okunur bir özelliktir.
  2. MoveNext() Metodu
    Metot her çağrıldığında numaralandırıcı mevcut konumunu koleksiyon içindeki bir sonraki elemana kaydırır. Bir sonraki eleman mevcut ise True, değilse False döndürür. MoveNext() metodu hiç çağrılmamış ise Current’ın değeri tanımsızdır.
  3. Reset() Metodu
    Numaralandırıcıyı başlangıç durumuna döndürür.

IDictionaryEnumerator Arayüzü

Dictionary, HashTable, SortedList gibi Anahtar-Değer çiftlerini saklayan koleksiyon sınıflarında IEnumerator arayüzü yerine IDictionaryEnumerator arayüzünü kullanmaktayız. IDictionaryEnumerator, IEnumerator’dan türetildiği için, IEnumerator arayüzünde bulunan metot ve özelliklerini de içermektedir. Ayriyeten Anahtar-Değerler çiftini tutan Entry özelliğini içermektedir.

  1. DictionaryEntry Entry Özelliği
    O an Numaralandırılmakta olan Anahtar-Değer çiftini tutmaktadır.
  2. Entry.Key Özelliği
    O an Numaralandırılmakta olan Anahtar-Değer çiftinin Anahtar(Key) değerini döndürmektedir.
  3. Entry.Value Özelliği 
    O an Numaralandırılmakta olan Anahtar-Değer çiftinin Değer(Value) değerini döndürmektedir.
Serdar Yılmaz