9.10.2021
C# List Kullanımı

List, Koleksiyon sınıfları özel tasarlanmış nesneleri ve onlara ait olan görevleri yerine getirmek için oluşturulmuş olan nesnelerdir. List class diziler(array) ve veri yapıları (data structure) nesneleri yerine kullanılır. List sınıfları kullanıldığında dizi üzerindeki boyutundaki esneklik yanı sıra ek özellikleri de kolaylık sağlamaktadır.

 

 List < T > Oluşturma:

T parametresi listedeki nesnelerin türünü ifade etmektedir.

List<int> sayilar = new List<int>();

 

Oluşturulan List Nesnesine Değer Ekleme:

List<int> sayilar = new List<int>();

sayilar.Add(37);

sayilar.Add(15);

sayilar.Add(3);

sayilar.Add(39);

 

List<string> isimler = new List<string>();

isimler.Add("Murat");

isimler.Add("Ahmet");

isimler.Add("Mert");

Add komutu ile isimler listine string, sayilar listine ise int türünde nesneler ekleyebilir.

 

List Nesnesinin Uzunluğunu Alma:

isimler.Count;

 

List Nesnesinin Değerlerini Okuma (foreach):

 

foreach (string isim in isimler)

{

MessageBox.Show(isim);

}

 

int toplam=0;

for (int i = 0; i < sayilar.Count; i++)

{

toplam+=sayilar[i];

}

MessageBox.Show(sayilar);

For veya foreach döngülerini kullanarak list değerini okuyabiliriz.

 

C# List.ForEach Methodu ile Değerleri Okuma:

            List<string> isimler = new List<string>();

            isimler.Add("Murat");

            isimler.Add("Ahmet");

            isimler.Add("Mert");

            isimler.Add("Cem");

            isimler.ForEach(isim =>  Console.WriteLine(isim));

List.ForEach  işlevi liste içindeki her öge için belirtilen işlevi uygular. foreach ifadesi ile aynı görevi görmektedir.

 

List Nesnesinden Değer Çıkarma:

Remove Silinmesini istenilen değeri siler. Silinecek değer liste içinde birden fazla olması durumunda ilk değeri kaldırır. Bu metodu genellikle referans tipler ile değer çıkarmak için kullanılır. 

isimler.Remove("Can");

sayilar.Remove(26);

 

List Nesnesinden Index Numarası ile Değer Çıkarma:

RemoveAt silinecek index numarasını parametre olarak alır.

 isimler.RemoveAt(2); // index sırası 2 olan değeri siler.

 isimler.RemoveAt(0); // ilk sıradaki değeri siler.

 

C# List İçinde Arama:

List.Contains() metodunu kullanarak bir nesnenin listede olup olmadığını kontrol ettirebilirsiniz.

if (isimler.Contains("Ahmet"))

{

MessageBox.Show("Ahmet bu listede mevcuttur.");

}

BinarySearch metodu, kendisine verilen değerin listede kaçıncı sırada olduğunu döndürür. Aranan değer liste içinde yoksa negatif bir değer döndürür.

            List<string> isimler = new List<string>();

            isimler.Add("Murat");

            isimler.Add("Ahmet");

            isimler.Add("Mert");

            isimler.Add("Cem");

 

            int aranaIndex = isimler.BinarySearch("Ahmet"); //arananIndex:1

            int aranaIndex2 = isimler.BinarySearch("AKM"); // negatif değer

 

C# Diziyi Listeye Çevirme:

string[] dizi = new string[3];

dizi[0] = "Ali";

dizi[1] = "Veli";

dizi[2] = "Fatma";

Diziyi listeye aşağıdaki gibi çevirebilirsiniz.

List<string> isimler = new List<string>(dizi);

 

List Nesnesini Boşaltma:

isimler.Clear ();

C# List Nesnesine Nesne Ekleme:

Aşağıdaki şekilde Kisi adında oluşturduğumuz sınıfı  oluşturduğumuz liste nesnesine ekleyelim.

class Kisi

{

string ad;

string soyad;

public string Ad

{

get

{

return ad;

}

set

{

ad = value;

}

}

public string Soyad

{

get

{

return soyad;

}

set

{

soyad = value;

}

}}

 

Kisi sınıfını kullanan List Örneği:

List<Kisi> Kisiler= new List< Kisi>();

 

Kisi kisi1= new Kisi();

Kisi kisi2= new Kisi ();

 

kisi1.Ad = "AKM";

kisi1.Soyad="Akademi";

 

kisi2.Ad = "Ahmet";

kisi2.Soyad = "Kaya";

 

Kisiler.Add(kisi1);

Kisiler.Add(kisi2);

 

List<Kisi> Kisiler= new List< Kisi>();

Kisimler.Add(new Kisi()

{

Ad="Ahmet",

Soyad="Kaya",

});

Listeyi Ekrana Yazdırma

foreach (Kisi kisi in Kisiler)

{

Console.Write(kisi.Ad);

Console.WriteLine(kisi.Soyad);

}

 

C# List Kullanımı ile İlgili Örnek:

1-25 arasındaki sayılar bir listeye aktarıyoruz.  for döndüğü içinde sırasıyla bir değer seçip, değeri listeden çıkarıyoruz.

 

List<int> sayilar = new List<int>();

       for(int i=1;i<=25; i++) {

          sayilar.Add(i);

       }

       for(int x=1;x<=6;x++) {

          System.Threading.Thread.Sleep(1000); //Seçimler arası 1sn bekleme süresi

          Random rnd = new Random();

          int index = rnd.Next(0, sayilar.Count);

          Console.WriteLine(sayilar[index]);

          sayilar.RemoveAt(index);

       }

       Console.ReadLine();