C# 12 ve 13: Modern Kod Yazımında Yeni Dönem
-
C# 12 (.NET
ve C# 13 (.NET 9), dilin temel yeteneklerini geliştirirken; bellek yönetimi, koleksiyonlar ve nesne oluşturma süreçlerine büyük yenilikler getirdi.1. Primary Constructors (C# 12)
C# 12 ile gelen en popüler özelliklerden biri. Artık sınıflar ve yapıların (struct) parametrelerini doğrudan sınıf isminin yanında tanımlayabiliyoruz. Bu, bağımlılık enjeksiyonu (DI) ve özel alan (field) atama işlemlerini çok daha sade hale getiriyor.
Eski Yöntem:
public class Person { private readonly string _name; public Person(string name) { _name = name; } }C# 12 (Yeni):
public class Person(string name) { public string Name => name; }2. Params Collections (C# 13).
Yıllardır kullandığımız params anahtar kelimesi sadece dizilerle (Array) sınırlıydı. C# 13 ile artık IEnumerable<T>, List<T> ve ReadOnlySpan<T> gibi tiplerle de params kullanabiliyoruz. Bu, bellek optimizasyonu için kritik bir adım.
// Artık List tipinde params alabiliyoruz public void Listele(params List<string> urunler) { /* ... */ }3. Collection Expressions (C# 12)
Diziler, listeler veya Span'lar oluştururken kullanılan farklı söz dizimlerini tek bir standartta toplar. Köşeli parantez [] kullanımı ile kod daha temiz görünür.// Eskiden: int[] sayilar = new int[] { 1, 2, 3 }; int[] sayilar = [1, 2, 3]; List<string> isimler = ["Ali", "Veli", "Ayşe"]; // Spread Operatörü (..) ile dizileri birleştirme int[] ekleme = [0, ..sayilar, 4]; // [0, 1, 2, 3, 4]4. Yeni "lock" Tipi (C# 13)
C# 13, eşzamanlı (concurrency) programlamada kilitlenmeleri yönetmek için yeni bir System.Threading.Lock nesnesi getirdi. Eski object tabanlı kilitlere göre çok daha performanslı ve "thread-safe" bir yapı sunuyor.
private readonly System.Threading.Lock _anahtar = new(); public void VeriGuncelle() { lock (_anahtar) // Yeni Lock nesnesi ile daha hızlı kilitlenme { // Kritik işlemler } }5. Alias Any Type (C# 12)
Artık using anahtar kelimesini kullanarak sadece sınıflara değil, tuple (demet) veya pointer gibi herhangi bir tipe takma ad verebilirsiniz.using Koordinat = (int x, int y); Koordinat konum = (10, 20);C# 12 vs C# 13: Temel Farklar
Özellik C# 12 (.NET
C# 13 (.NET 9)
Odak Noktası Kod sadeliği ve hız. Performans ve esneklik.
Yenilik Primary Constructors Params Collections
Dizi Yönetimi Collection Expressions ([]) Index From End in Object InitializersSonuç
C# 12 ve 13 ile birlikte dil, daha az kodla daha çok iş yapabilen, modern bir yapıya büründü. Özellikle Primary Constructors ve Collection Expressions, günlük kod yazma alışkanlıklarınızı tamamen değiştirecek güçte. Bu özellikleri kullanmak sadece kodunuzu kısaltmakla kalmaz, aynı zamanda .NET runtime'ın sunduğu en son performans optimizasyonlarından da yararlanmanızı sağlar.