Örneklerle C# Koleksiyonları Eğitimi
⚡ Akıllı Özet
C#'da koleksiyonlar, nesne gruplarını depolamak ve yönetmek için esnek bir yol sağlar. Dizilerin aksine, koleksiyonlar çalışma zamanında büyür ve küçülür ve System.Collections ve System.Collections.Generic ad alanları, listeler, sözlükler, yığınlar ve kuyruklar için hazır türler sunar.
Önceki dersimizde C#'ta dizileri nasıl kullanabileceğimizi öğrendik. Hadi buna kısaca bir göz atalım. Programlamada diziler bir dizi ilgili nesneyi gruplandırmak için kullanılır. Böylece, tek bir değişken adıyla erişilebilen bir dizi veya bir Tamsayı kümesi oluşturulabilir.
C#'ta Koleksiyonlar Nedir?
Koleksiyonlar benzer Dizilerbir grup nesneyle çalışmanın daha esnek bir yolunu sağlar.
Dizilerde, dizideki öğe sayısını önceden tanımlamanız gerektiğini fark etmişsinizdir. Dizi bildirildiğinde bunun yapılması gerekiyordu.
Ancak bir koleksiyonda koleksiyonun boyutunu önceden tanımlamanıza gerek yoktur. Dilediğiniz zaman koleksiyona öğe ekleyebilir, hatta öğeleri kaldırabilirsiniz. Bu bölümde C#'ta mevcut olan farklı koleksiyonlarla nasıl çalışabileceğimize odaklanacağız.
System.Collections Sınıfları
.NET Framework, orijinal, genel olmayan koleksiyon sınıflarını System.Collections ad alanı içinde gruplandırır. Aşağıdaki tabloda, doğrudan kullanabileceğiniz başlıca türler özetlenmiştir.
| Koleksiyon | Açıklama |
| Dizi Listesi | ArrayList koleksiyonu Dizilere benzer C#'ta veri türü. En büyük fark, dizi listesi koleksiyonunun dinamik yapısıdır. |
| Yığın | Yığın, son giren ilk çıkar (LIFO) kavramını temsil eden özel bir koleksiyon türüdür. |
| kuyruklar | Kuyruk, ilk giren ilk çıkar prensibini temsil eden özel bir durum koleksiyonudur. |
| hashtable'a | Karma tablo, anahtar-değer çiftlerini depolamak için kullanılan özel bir veri kümesidir. |
| Sıralanmış Liste | SortedList, anahtar/değer çiftlerini varsayılan olarak artan anahtar sırasına göre saklayan bir koleksiyondur. |
| bit dizisi | Bit dizisi, bitleri saklayan bir veri yapısı dizisidir. |
C#'da Genel Koleksiyonlar
Yukarıdaki genel olmayan sınıflar her öğeyi genel bir nesne olarak saklar; bu da derleyicinin türü kontrol edememesi ve programın değerlerin kutulanması için küçük bir bedel ödemesi anlamına gelir. Bunu çözmek için C#, her koleksiyonun tanımlanmış bir türe bağlı olduğu System.Collections.Generic ad alanını ekledi.
Liste gibi genel bir koleksiyon Yalnızca dizeleri kabul eder, bu nedenle hatalar derleme zamanında yakalanır ve bir öğeyi geri okurken tür dönüştürme gerekmez. Bu, genel koleksiyonları daha güvenli, daha hızlı ve okunması daha kolay hale getirir; bu nedenle modern C# kodunda varsayılan tercihtirler.
En yaygın genel koleksiyonlar aşağıda listelenmiştir:
- Liste : Boyutu değiştirilebilir, indeks tabanlı bir liste olup, ArrayList'in genel amaçlı alternatifi.
- Sözlük : Anahtar-değer çiftlerini hızlı, karma tabanlı aramalarla saklar.
- Karma Küme : Yalnızca benzersiz değerler içerir ve birleşim gibi küme işlemlerini destekler.
- Sıra : İlk giren ilk çıkar esasına göre çalışan bir koleksiyon türü, kuyruk sisteminin genel versiyonu.
- Yığın : Son giren ilk çıkar esasına dayalı bir koleksiyon, Stack'in genel versiyonu.
- Sıralı Liste : Anahtar-değer çiftlerini anahtara göre artan sırada sıralı tutar.
C# Liste Koleksiyonu Örneği
Liste, dinamik bir dizi gibi davrandığı için en yaygın kullanılan genel koleksiyon türüdür. Aşağıdaki örnek, dizelerden oluşan bir liste oluşturur, öğeler ekler ve çıkarır, boyutunu okur ve ardından kalan değerleri yazdırır. Kodun tamamı Program.cs dosyasında yazılmıştır.
) 1 Adım System.Collections.Generic ad alanını içe aktarın ve bir dize listesi tanımlayın.
) 2 Adım Add metodu ile öğe ekleyin ve Remove metodu ile bir öğeyi silin.
) 3 Adım Count özelliğini okuyun, ardından foreach döngüsü kullanarak listede ilerleyin.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Açıklama:-
- System.Collections.Generic ad alanı içe aktarılarak List türü programa erişilebilir hale getirildi.
- Yeni bir liste "Eğitimler" adı verilen bir klasör oluşturulur ve "Add" yöntemiyle üç isim eklenir.
- Remove yöntemi " değerini siler".PythonBu da listede iki madde kalmasına neden oluyor.
- `Count` özelliği öğe sayısını döndürür ve `foreach` döngüsü kalan her değeri sırayla yazdırır.
Program çalıştırıldığında, öncelikle sayısını yazdırır. 2, Ardından Java hem de Kotlin Ayrı satırlarda. Bu, bir koleksiyonun çalışma zamanında boyutunu nasıl değiştirdiğini gösterir; sabit bir dizi bunu yapamaz.
C#'da Diziler ve Koleksiyonlar Arasındaki Fark
Hem bir dizi Bir koleksiyon, birbiriyle ilişkili öğeleri tek bir isim altında gruplandırır; ancak program çalışmaya başladıktan sonra farklı davranırlar. Hangisini ne zaman kullanacağınızı bilmek, daha temiz ve verimli kod yazmanıza yardımcı olur.
Başlıca farklılıklar aşağıda listelenmiştir:
- Alan: Bir dizinin uzunluğu tanımlama sırasında sabit olarak belirlenirken, bir koleksiyonun uzunluğu her zaman artabilir veya azalabilir.
- Tip işleme: Bir dizi tek bir türü saklarken, bir koleksiyon jeneriklerle tür güvenli olabilir veya jenerik olmayan durumlarda karışık türdeki nesneleri tutabilir.
- Lokasyon: Diziler dilin yapısına entegre edilmişken, koleksiyon sınıfları System.Collections ve System.Collections.Generic ad alanlarında yer almaktadır.
- Dahili işlemler: Koleksiyonlar, öğeleri ekleme, kaldırma, arama ve sıralama için hazır yöntemler sunarken, diziler yalnızca temel dizinli erişim sağlar.
- En iyi kullanım: Öğe sayısı biliniyor ve sabitse dizi, program çalışırken sayı değişiyorsa koleksiyon seçin.
Özetle, diziler sabit boyutlu veriler için en uygunudur, koleksiyonlar ise gerçek dünyadaki çoğu uygulamanın ihtiyaç duyduğu esnekliği sağlar.

