Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# Non-Generic Koleksiyon Yapıları – System.Collections

System.Collections İsim Alanı
Non-Generic koleksiyonların bulunduğu bir namespacedir.
System.Collections isim alanında bir çok arayüz bulunmaktadır.
Bu arayüzlerin ne olduklarını ve ne işe yaradıklarını inceleyelim..
Öncelikle şunu belirtmek istiyorum ki,bütün koleksiyon sınıfları birazdan anlatmaya başlayacağım arayüzlerden bir ya da birden fazlasını uygulamıştır.İleride göreceğimiz koleksiyon sınıflarının ortak özellik ve metodlarının sebebi, uygulanan arayüzlerin aynı olmasıdır.
ICollection
Bu arayüz, bir koleksiyonda olabilecek en temel metod ve propertyleri içerir.System.Collection isim alanında bulunan tüm sınıflar bu arayüzü uygulamıştır.ICollection arayüzü,IEnumerable arayüzünden kalıtım almıştır.Bu sebepten dolayı ICollection arayüzünü uygulayan sınıflar,IEnumerable arayüzünüde uygulamak zorundadır.


IComparer
Birden fazla nesnenin sıralanabilmesi için nesnelerin karşılaştırılabilir olması gerekiyor.Örneğin, bir sayı diğer sayıdan ya daha büyüktür, ya daha küçüktür ya da eşittir.Bu mantıkla bir int dizisi sıralanabilir.Aynı karşılaştırma mantığı string ifadeler içinde geçerlidir.”Ahmet” her zaman “Mustafa” dan önce gelir.Buradada alfabetik karşılaştırma söz konusudur.

Peki yarattığımız herhangi bir classın birden fazla nesnesini nasıl sıralayabiliriz.Örneğin, “Personel” isimli bir classımız var.Ve bu classta “PersonelAdi”,”PersonelSoyadi” ve “PersonelID” adında üç tane property mevcut.Bu özelliklerdeki classımızdan beş tane nesne oluşturuyorum.Bu nesneleri nasıl sıralayabilirim.Program bunları “PersonelAdi” na göremi,”PersonelSoyadi” na göremi yoksa “PersonelID” sine göremi sıralayacak.İşte bu sorunu bu arayüz sayesinde çözebiliyoruz.


IDictionary
Bu arayüzü bir key – value ikilisi gibi çalışan koleksiyon sınıfları uygularlar.HashTable gibi koleksiyon tiplerini anlatırken key – value ikilisinin ne demek olduğunu anlayacaksınız.IDictionary arayüzü ICollection arayüzünden türemiştir.Bu yüzden IDictionary arayüzünü uygulayan bir sınıf ICollection arayüzündeki metod ve propertyleri de uygulamalıdır.


IDictionaryEnumerator
Bu arayüz ile key – value ikili çiftlerden sadece key, sadece value ya da hem key hem value anahtar çiftlerini elde etmek için Value, Key ve Entry isimli 3 tane özellik bulunur.


IEnumerable
Bir koleksiyon tabanlı sınıfın elemanları arasında ilerlemek için kullanılan GetEnumerator() metodunu tanımlar.


IEnumerator
Bir koleksiyon sınıfı için koleksiyondaki her bir elemana erişmek ve diğer işleri yapmak için uygulanması gereken arayüzdür.
Koleksiyonlar içindeki elemanlar for,foreach ile dönülebilir.Aynı zamanda IEnumarator referansı üzerinden de dönülebilir.GetEnumarator() metodu ile koleksiyonun IEnumarator’ü talep edilir.

            ArrayList liste = new ArrayList();
            for (int i = 1; i <= 5; i++)
            {
                liste.Add(i);
            }

Yukarıdaki kodu incelerseniz,liste adındaki ArrayList’imiz 1’den 5’e kadar dolduruluyor.

            IEnumerator elemanlar = liste.GetEnumerator();

ArrayList içindeki elemanlara teker teker ulaşabilmek için IEnumerator arayüzünün referansına ihtiyaç duyuyoruz.GetEnumerator() metoduyla veriler teker teker ulaşıyoruz.
Artık ArrayList içindeki elemanlara IEnumerator arayüzü tipinden olan “elemanlar” referansından ulaşmak mümkün.
Şimdi “elemanlar” referansımızın metod ve özelliklerine bakalım.
MoveNext() metodu : Kolesiyon içinde dolaşacak başka eleman var mı? diye sorar.Varsa True yoksa False döndürür.
Current özelliği : O an üzerinde bulunulan elemanı verir.
Reset() metodu : Koleksiyonun ilk elemanına kafayı konumlandırır.

            while (elemanlar.MoveNext())
            {
                MessageBox.Show(elemanlar.Current + "");
                if ((int)elemanlar.Current == 5)
                {
                    elemanlar.Reset();
                }
            }

IList
Bu arayüz, bir koleksiyondaki elemanların her birine sıfır tabanlı bir indeks ile erişebilmek için çeşitli metodlar ve özellikler içerir.IList,ICollection arayüzünden türetilmiştir.


IHashProvider
Bu arayüz Object sınıfındaki GetHashCode() metodunu tanımlar.Bu metod ile HashTable sınıfı ile çalışabilmek için bir kod üretilir.Hash kodu denilen bu kodun ne anlama geldiğini HashTable sınıfında anlayacaksınız.
Şimdi Non-Generic koleksiyon yapılarını incelemeye başlayalım.
Bir sonraki sayfada ArrayList koleksiyon yapısını inceleyeceğiz.

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. mustafa dedi ki:

    harikulade bir site gencay 🙂

Bir yanıt yazın

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