C# List Sınıfı Nedir ve Neden Kullanılır?

List<T>, C# dilinde bir koleksiyon sınıfıdır ve aynı türdeki verileri dinamik bir şekilde saklamak için kullanılır. Dizilere kıyasla boyutunun değiştirilebilir olması, onu oldukça kullanışlı kılar. List sınıfı, eleman ekleme, çıkarma ve arama gibi işlemleri kolaylaştıran birçok metot içerir.

List Nasıl Tanımlanır

List<T>, C# dilinde dinamik boyutlu bir koleksiyon türüdür. Listeyi tanımlarken, hangi türde eleman tutacağını belirtmek için T tipi kullanılır. Örneğin:

// Başlangıç elemanlarıyla liste
List<string> meyveler = new List<string> { "Elma", "Armut", "Muz" };

// Liste elemanlarını yazdır
foreach (var meyve in meyveler)
{
    Console.WriteLine(meyve);
}

1. Eleman Ekleme: Add ve AddRange

Add ile listeye tek bir eleman, AddRange ile birden fazla eleman eklenebilir.

// Tek eleman ekleme
List<string> meyveler = new List<string>();
meyveler.Add("Elma");
meyveler.Add("Armut");

// Birden fazla eleman ekleme
List<string> yeniMeyveler = new List<string> { "Muz", "Çilek" };
meyveler.AddRange(yeniMeyveler);

foreach (var meyve in meyveler)
{
    Console.WriteLine(meyve);
}

2. Eleman Çıkarma

Remove ve RemoveAll ile belirli bir eleman veya belirli bir koşulu sağlayan elemanlar kaldırılabilir.

List<int> sayilar = new List<int> { 10, 20, 30, 40, 50 };
sayilar.Remove(30); // 30'u kaldırır

// Çift sayıları kaldırma
sayilar.RemoveAll(sayi => sayi % 2 == 0);

foreach (var sayi in sayilar)
{
    Console.WriteLine(sayi);
}

3. Eleman Bulma

Find ve FindAll kullanılarak Listede belirli bir koşulu sağlayan eleman veya elemanlar bulunabilir.

List<int> sayilar = new List<int> { 5, 10, 15, 20, 25, 30 };

// İlk çift sayıyı bul
int ilkCift = sayilar.Find(sayi => sayi % 2 == 0);
Console.WriteLine($"İlk çift sayı: {ilkCift}");

// 10'dan büyük tüm sayıları bul
List<int> buyukSayilar = sayilar.FindAll(sayi => sayi > 10);
Console.WriteLine("10'dan büyük sayılar:");
foreach (var sayi in buyukSayilar)
{
    Console.WriteLine(sayi);
}

4. Sıralama ve Ters Çevirme:

Sırasıyla Sort ve Reverse metotları Listeyi sıralamak veya ters çevirmek için kullanılır.

List<int> sayilar = new List<int> { 50, 20, 40, 10, 30 };

// Küçükten büyüğe sırala
sayilar.Sort();
Console.WriteLine("Sıralı liste:");
foreach (var sayi in sayilar)
{
    Console.WriteLine(sayi);
}

// Listeyi ters çevir
sayilar.Reverse();
Console.WriteLine("Ters sıralı liste:");
foreach (var sayi in sayilar)
{
    Console.WriteLine(sayi);
}

5. Listeyi Temizleme

Clear() ile Tüm elemanları kaldırmak için kullanılır.

List<string> renkler = new List<string> { "Kırmızı", "Mavi", "Yeşil" };
Console.WriteLine($"Liste eleman sayısı: {renkler.Count}");

// Listeyi temizle
renkler.Clear();
Console.WriteLine($"Liste temizlendikten sonra eleman sayısı: {renkler.Count}");

6. Eleman İçerik Kontrolü

Contains, bir elemanın listede olup olmadığını kontrol eder.

List<string> hayvanlar = new List<string> { "Kedi", "Köpek", "Kuş" };
Console.WriteLine(hayvanlar.Contains("Kedi") ? "Kedi listede var." : "Kedi listede yok.");

7. Belirli Elemanı İndeksle Bulma

IndexOf ve LastIndexOf elemanın ilk veya son indeksini döner.

List<string> isimler = new List<string> { "Ali", "Veli", "Ali", "Ayşe" };
int ilkAliIndeks = isimler.IndexOf("Ali");
int sonAliIndeks = isimler.LastIndexOf("Ali");

Console.WriteLine($"İlk Ali'nin indeksi: {ilkAliIndeks}");
Console.WriteLine($"Son Ali'nin indeksi: {sonAliIndeks}");

Pekiştirme ve Özet

Aşağıdaki kod, bir List kullanarak ürün bilgilerini yönetir. Ekleme, çıkarma, sıralama ve arama gibi işlemleri içerir.

List<string> urunler = new List<string> { "Bilgisayar", "Telefon", "Tablet", "Saat" };

// Yeni ürün ekle
urunler.Add("Kulaklık");

// Ürünleri alfabetik sırala
urunler.Sort();

// "Telefon" ürününü kaldır
urunler.Remove("Telefon");

// "Saat" ürününün listede olup olmadığını kontrol et
if (urunler.Contains("Saat"))
{
    Console.WriteLine("Saat ürünü mevcut.");
}

// Listeyi yazdır
Console.WriteLine("Ürün listesi:");
foreach (var urun in urunler)
{
    Console.WriteLine(urun);
}

Kapanış

C# List<T> sınıfı, koleksiyonlarla çalışırken hem esnek hem de güçlü bir araç sunar. Bu içerikte Add, Remove, Find, Sort, Clear gibi temel metotları ve bunların uygulamalarını detaylıca inceledik. Liste metotları, verilerinizi daha düzenli bir şekilde yönetmenize, kolayca düzenlemenize ve arama yapmanıza olanak tanır.

Programlama dünyasında, doğru araçları doğru şekilde kullanmak, kodunuzu daha verimli ve okunabilir hale getirir. C# List sınıfını ve metotlarını öğrenmek, gerçek dünya uygulamalarında size önemli bir avantaj sağlayacaktır.

Her zaman olduğu gibi, öğrendiğiniz bilgileri pekiştirmek için pratik yapmayı unutmayın. Kendi projelerinizde List kullanımını deneyerek, bu güçlü yapının sunduğu imkanları daha iyi kavrayabilirsiniz. Keyifli kodlamalar 🚀