Koleksiyonlar
C#’ta koleksiyonlar, birden fazla nesneyi yönetmek ve organize etmek için kullanılan dinamik veri yapılarıdır. Koleksiyonlar, dizilerden farklı olarak boyutları esnektir ve ekleme, silme, arama gibi işlemleri optimize edilmiş yöntemlerle sunar. Yazılım geliştirmede verilerin yönetimi ve işlenmesi açısından koleksiyonlar kritik bir öneme sahiptir; özellikle büyük veri kümeleri, kullanıcı girdileri veya dinamik içerik ile çalışırken performansı ve kod okunabilirliğini artırır.
C# koleksiyonları, List, Dictionary, HashSet, Queue ve Stack gibi yapıları içerir. List, sıralı veri saklamak için uygundur; Dictionary, anahtar-değer çiftlerini depolayarak hızlı erişim sağlar; HashSet, benzersiz öğeler oluşturmak için idealdir; Queue ve Stack ise sırasıyla FIFO ve LIFO mantığını uygular. Koleksiyonlar, nesne yönelimli programlamanın (OOP) temel prensipleriyle entegre çalışarak encapsulation, polymorphism ve abstraction gibi kavramları destekler.
Bu eğitimde, koleksiyonların nasıl oluşturulacağını, eleman ekleme, silme, arama ve gezinme yöntemlerini, hata yönetimini, performans optimizasyonlarını ve en iyi uygulamaları öğreneceksiniz. Öğrenilen bilgiler, C# projelerinde veri yönetimini daha verimli ve güvenli hale getirecek, doğru koleksiyon seçimi ile uygulamaların ölçeklenebilirliğini ve bakımını kolaylaştıracaktır.
Temel Örnek
textusing System;
using System.Collections.Generic;
namespace KoleksiyonlarExample
{
class Program
{
static void Main(string\[] args)
{
// Dinamik bir tamsayı listesi oluşturma
List<int> sayilar = new List<int>();
// Eleman ekleme
sayilar.Add(5);
sayilar.Add(10);
sayilar.Add(15);
// Elemanları yazdırma
Console.WriteLine("Liste Elemanları:");
foreach (int s in sayilar)
{
Console.WriteLine(s);
}
// Eleman kontrolü
if (sayilar.Contains(10))
Console.WriteLine("Liste 10 değerini içeriyor.");
// Eleman silme
sayilar.Remove(5);
Console.WriteLine("5 değeri silindikten sonra:");
sayilar.ForEach(n => Console.WriteLine(n));
}
}
}
Bu örnekte List
Generics kullanımı, tür güvenliğini sağlar ve runtime hatalarını önler. List, sıralı veri saklama gereksinimlerinde idealdir ve bu temel yapı, daha karmaşık koleksiyon tiplerini ve uygulamalarda performans odaklı veri yönetimini anlamak için başlangıç noktasıdır.
Pratik Örnek
textusing System;
using System.Collections.Generic;
namespace KoleksiyonlarPratik
{
class Urun
{
public int Id { get; set; }
public string Ad { get; set; }
public double Fiyat { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Dictionary kullanarak ürün koleksiyonu oluşturma
Dictionary<int, Urun> urunler = new Dictionary<int, Urun>();
// Ürün ekleme
urunler.Add(1, new Urun { Id = 1, Ad = "Laptop", Fiyat = 5000 });
urunler.Add(2, new Urun { Id = 2, Ad = "Mouse", Fiyat = 200 });
urunler.Add(3, new Urun { Id = 3, Ad = "Klavye", Fiyat = 350 });
// Fiyatı 300'den büyük ürünleri yazdırma
Console.WriteLine("Fiyatı 300'den büyük ürünler:");
foreach (var urun in urunler.Values)
{
if (urun.Fiyat > 300)
Console.WriteLine($"{urun.Ad} - Fiyat: {urun.Fiyat}");
}
// Hata yönetimi: aynı anahtar ekleme
try
{
urunler.Add(2, new Urun { Id = 2, Ad = "Monitor", Fiyat = 1200 });
}
catch (ArgumentException ex)
{
Console.WriteLine("Hata: Aynı anahtar tekrar eklenemez. " + ex.Message);
}
}
}
}
Bu örnekte Dictionary\
Generics ve OOP kullanımı, koleksiyonları daha güvenli, ölçeklenebilir ve bakımı kolay hale getirir. Doğru koleksiyon seçimi, yazılımın hem performansını hem de veri bütünlüğünü doğrudan etkiler.
Koleksiyonlarla çalışırken en iyi uygulamalar, senaryoya uygun koleksiyon seçmek, foreach veya LINQ ile veri gezinmek, hataları doğru yönetmek ve gereksiz kopyalamalardan kaçınmaktır. Yaygın hatalar, List ile sık arama yapmak, Dictionary’de tekrar eden anahtar eklemek ve bellek tüketimini dikkate almamaktır. Koleksiyonlar için C# özelinde debug araçları kullanmak ve optimize edilmiş veri yapıları seçmek, performans ve güvenlik için kritik öneme sahiptir.
📊 Referans Tablosu
C# Element/Concept | Description | Usage Example |
---|---|---|
List<T> | Dinamik ve sıralı eleman listesi | List<int> sayilar = new List<int>(); |
Dictionary\<TKey, TValue> | Anahtar-değer çiftleri | Dictionary\<int, string> sozluk = new Dictionary\<int, string>(); |
HashSet<T> | Benzersiz eleman kümesi | HashSet<string> isimler = new HashSet<string>(); |
Queue<T> | FIFO (ilk giren, ilk çıkar) yapısı | Queue<int> kuyruk = new Queue<int>(); |
Stack<T> | LIFO (son giren, ilk çıkar) yapısı | Stack<int> yigin = new Stack<int>(); |
Koleksiyonları öğrenmek, C#’ta veri yapıları, algoritmalar ve OOP prensiplerini anlamayı güçlendirir. Gelecek adımlar arasında LINQ, thread-safe koleksiyonlar ve tasarım desenlerini incelemek yer alır. Koleksiyonlar, envanter yönetimi, veri önbellekleme ve büyük veri işlemlerinde projelerde kritik öneme sahiptir. Resmi dokümantasyon ve topluluk kaynakları, sürekli öğrenme ve ileri seviye uygulamalar için değerli referanslardır.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu konudaki anlayışınızı pratik sorularla test edin.
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek