List<T> Koleksiyonu
class Program
{
static void Main(string[] args)
{
int[] sayilar = { 1, 2, 3, 4, 5, 6, 7, 8, 9
};
List<int> liste = new List<int>(); //içeride sadece integer tipinden nesneler
olabilir.
foreach (int sayi in sayilar)
{
liste.Add(sayi); // Add metodu bizden
integer beklediği için boxing olayı meydana gelmez.
}
int[] yeniDizi = new int[sayilar.Length];
for (int i = 0; i < yeniDizi.Length; i++)
{
yeniDizi[i] =
liste[i]; //listenin içerisindeki her bir eleman object olduğundan cast işlemi yapmak
zorundayız.
}
foreach (int sayi in yeniDizi)
{
Console.WriteLine(sayi); //iterasyon yaparken int
harici bir tip kullanırsak derleme zamanı hatası alırız. Ancak ArrayList kullanırsak
çalışma zamanı hatası alırız. List kullanımı, bizi doğru tip ile iterasyon
yapmaya zorlamış olur, dolayısı ile çalışma zamanında hata almayız.
}
}
}
Yaptığımız örnek üzerinden konuşursak,
List tipinin ArrayList’e göre daha kullanışlı olduğunu söyleyebiliriz. Ancak
tekrar etmekte fayda var, her zaman ihtiyaçlarımız doğrultusunda en uygun tipi
kullanmalıyız. List’in daha kullanışlı olduğunu bu örnek için belirttiğimiz
hatırlatmakta fayda var.
Dictionary<T,T>
Koleksiyonu
Bu koleksiyonların en önemli farkı, içeride tutulan her bir
elemanın, aynı zamanda bir key değerine sahip olmasıdır. Zaten okumayı da index
yerine, bu key değerleri ile yapmaktayız. Dictionary sınıfı generic bir sınıf olduğundan ötürü, bu
sınıfın nesnesini örneklerken içeride tutulacak elemanın ve bu elemanın key
değerinin tipini belirleme işini ihtiyacımız doğrultusunda
gerçekleştirebiliriz. Daha anlaşılabilir olması açısından basit bir örnek ile
incelemeye çalışalım.
Dictionary
sınıfınının nesne örneğini oluştururken aşağıdaki tablo ile karşılaşacağız.
Gördüğümüz
TKey parametresi, index yerine okuma yapacağız key değerinin tipini belirtir.
TValue ise, içeride tutulacak elemanların tipini belirtir.
Bu
nesne örneğini oluşturup içerisine elemanlar ekleyelim.
class Program
{
static void Main(string[] args)
{
//TKey parametresi, okuma yapmamızı sağlayan
key değerinin tipidir. Burada integer olarak belirttik.
//TValue parametresi, içeride tutulan
elemanın tipini belirtir. Biz burada stringler tutacağımızı belirttik.
Dictionary<int, string> koleksiyon = new Dictionary<int, string>();
koleksiyon.Add(34, "istanbul");
koleksiyon.Add(35, "izmir");
koleksiyon.Add(16, "bursa");
koleksiyon.Add(10, "balıkesir");
koleksiyon.Add(41, "kocaeli");
}
}
Şu
an koleksiyon içerisinde 5 adet string tipinden eleman mevcuttur. Bu
elemanlarla birilikte integer tipinden birer key değeri de bulunmaktadır.
Koleksiyon içerisinden okuma yapmak istersek;
Alıştığımız index yapısından farklı olarak, key değeri ile okuma
yapıldığını da yukarıda görmemiz mümkündür. int tipinden key alarak, geriye aldığı
o key ile eşleşen elemanı döndürür.
Son
olarak okuma işlemini gerçekleştirelim. Kodun son hali aşağıdaki gibidir.
class Program
{
static void Main(string[] args)
{
//TKey parametresi, okuma yapmamızı sağlayan
key değerinin tipidir. Burada integer olarak belirttik.
//TValue parametresi, içeride tutulan
elemanın tipini belirtir. Biz burada stringler tutacağımızı belirttik.
Dictionary<int, string> koleksiyon = new Dictionary<int, string>();
koleksiyon.Add(34, "istanbul");
koleksiyon.Add(35, "izmir");
koleksiyon.Add(16, "bursa");
koleksiyon.Add(10, "balıkesir");
koleksiyon.Add(41, "kocaeli");
int[] plakaListesi = { 34, 35, 16, 10, 41 };
for (int i = 0; i < plakaListesi.Length; i++)
{
int keyDegeri =
plakaListesi[i];
Console.WriteLine(koleksiyon[keyDegeri]);
}
}
}
Ekran
çıktısı aşağıdaki gibi olacaktır.
Hiç yorum yok:
Yorum Gönder