C# 12 ve 13 Yenilikleri: En Son Güncellemeler ve Pratik Örnekler

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# 12 ve 13: Modern Kod Yazımında Yeni Dönem​


C# 12 (.NET 8) 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:
C#:
public class Person
{
private readonly string _name;
public Person(string name) { _name = name; }
}

C# 12 (Yeni):
C#:
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.

C#:
// 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.

C#:
// 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.

C#:
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.

C#:
using Koordinat = (int x, int y);

Koordinat konum = (10, 20);



C# 12 vs C# 13: Temel Farklar​


ÖzellikC# 12 (.NET 8)C# 13 (.NET 9)
Odak NoktasıKod sadeliği ve hız.Performans ve esneklik.
YenilikPrimary ConstructorsParams Collections
Dizi YönetimiCollection Expressions ([])Index From End in Object Initializers



Sonuç​


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.
 
Geri
Üst