.NET 11 RC2 ve C# 15 Yenilikleri: Union Tipleri, closed Hiyerarşiler, Etiketli break ve Yeni Bellek Güvenliği Modeli

Alesta WEB

.NET 11 RC2 ve C# 15 Yenilikleri: Union Tipleri, closed Hiyerarşiler, Etiketli break ve Yeni Bellek Güvenliği Modeli

Kısa cevap: Microsoft 13 Ekim 2026'da .NET 11 Release Candidate 2'yi yayımladı. Bu, Kasım'daki son sürümden önceki son ara sürüm. RC2 "go-live" lisansıyla geliyor, yani üretimde kullanılabiliyor ve Microsoft desteği var. .NET 11 ile birlikte gelen C# 15'in öne çıkan yenilikleri union tipleri, closed sınıf hiyerarşileri, koleksiyon ifadelerine with(...) ile argüman verme, extension indexer'lar ve etiketli break/continue. Ayrıca bellek güvenliği (unsafe) modeli baştan tanımlanmaya başlıyor. RC2'de F#'a runtime async desteği, .NET MAUI'de C# ile arayüz yazma ve Windows Forms'a KioskModeManager bileşeni de geliyor.

Ekranında kod açık dizüstü bilgisayar (Laptop showing source code)
C# 15'in yeni özellikleri en çok alan modeli ve iç içe döngü kodunu sadeleştiriyor. Fotoğraf: Arnold Francisca / Unsplash

RC2'de neler var? (What's in RC2)

RC2, Visual Studio 2026 Insiders ve C# Dev Kit eklentili Visual Studio Code ile çalışıyor. SDK get.dot.net/11 adresinden indiriliyor. Duyurudaki başlıca değişiklikler:

AlanDeğişiklik
KütüphanelerParça parça CBOR okuma, deneysel bileşik ML-KEM ve HPKE API'leri (kuantum sonrası şifreleme), özniteliğe özel DataAnnotations hata mesajları, ayarlanabilir HTTP/2 başlangıç eşzamanlılığı
SDK / MSBuildDosya düzeyi yönergelerde tırnaklı değerler, launch profile argümanlarında MSBuild özellikleri, proje değerlendirmede daha hızlı joker karakter eşleştirme
NuGetPaketin en az ne kadar süredir yayında olması gerektiği CLI'dan ayarlanabiliyor
F#Runtime async desteği, hesaplama ifadelerinde reraise, daha az bellek kullanan derleyici, Native AOT iyileştirmeleri
ASP.NET CoreQuickGrid sanallaştırma API'leri artık deneysel değil
.NET MAUIXAML olmadan, C# ile arayüz yazarak uygulama oluşturma; Apple Icon Composer varlıkları
Windows FormsYeni KioskModeManager bileşeni, Windows erişilebilirlik ayarlarına tepki, toplu güncellemede çizim ve yerleşimi askıya alma

NuGet'teki "minimum yayın yaşı" ayarı küçük görünse de tedarik zinciri saldırılarına karşı işe yarar: yeni yayımlanmış, henüz kimsenin incelemediği bir paket sürümü projeye hemen girmez.

Union tipleri (Union types)

C# 15'in en çok beklenen özelliği. Bir değerin birkaç tipten tam olarak biri olabileceğini dille ifade ediyor:

C#
public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);

public union Pet(Cat, Dog, Bird);

Pet pet = new Dog("Rex");

string name = pet switch
{
    Dog d => d.Name,
    Cat c => c.Name,
    Bird b => b.Name,
};

Her durum tipinden union'a örtük dönüşüm var ve derleyici switch ifadesinin bütün durumları kapsadığını denetliyor. Bugüne kadar bu iş için ortak bir arayüz, object ya da üçüncü taraf kütüphaneler kullanılıyordu. Çalışma zamanı tarafındaki UnionAttribute ve IUnion tipleri Preview 5'ten beri .NET 11'de. Microsoft, şartnamedeki bazı ayrıntıların sonraki sürümlerde geleceğini belirtiyor.

closed hiyerarşiler (Closed hierarchies)

closed ile işaretlenen bir sınıftan yalnız aynı derleme (assembly) içinde türetme yapılabiliyor. Derleyici bütün alt tipleri bildiği için switch ifadesinde varsayılan dala gerek kalmıyor:

C#
public closed record class GateState;
public record class Closed : GateState;
public record class Open(float Percent) : GateState;

string Describe(GateState state) => state switch
{
    Closed => "closed",
    Open(var percent) => $"{percent}% open",
};

closed sınıf örtük olarak abstract sayılıyor ve sealed ya da static ile birlikte kullanılamıyor. Kapalılık alt sınıflara geçmiyor: alt sınıfların da kapalı olmasını istiyorsanız onları da closed işaretlemeniz gerekiyor.

Koleksiyon argümanları, extension indexer, etiketli break (Other features)

Koleksiyon ifadesi argümanları: Koleksiyon ifadesinin ilk öğesi olarak with(...) yazıp kapasite veya karşılaştırıcı verilebiliyor:

C#
List<string> names = [with(capacity: values.Length * 2), .. values];
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// set tek öğe içerir

Extension indexer: C# 14'te gelen extension bloklarına artık indexer da yazılabiliyor:

C#
public static class SequenceIndexer
{
    extension(IEnumerable<int> sequence)
    {
        public int this[int index] => sequence.ElementAt(index);
    }
}

int third = Enumerable.Range(1, 10)[2];

Etiketli break ve continue: İç içe döngülerde bayrak değişkeni ya da goto kullanmadan dış döngüye çıkılabiliyor:

Metin
outer: for (int row = 0; row < grid.Height; row++)
{
    for (int column = 0; column < grid.Width; column++)
    {
        if (grid[row, column].IsBlocked) continue outer;
        if (grid[row, column].IsGoal) break outer;
    }
}

Yeni IDE0410 stil kuralı, etiketli atlamayla değiştirilebilecek eski bayrak ve goto kalıplarını gösteriyor.

Yeni bellek güvenliği modeli (Memory safety)

C# 15, birkaç sürüme yayılacak bir değişikliğin ilk adımını atıyor. Amaç, unsafe bağlamı işaretçi tipinin varlığına değil, yönetilmeyen belleğe gerçekten erişen işlemlere bağlamak. preview dil sürümüyle derlendiğinde şu işlemler artık unsafe gerektirmiyor: işaretçi tipi tanımlamak, & ile adres almak, fixed, stackalloc'u işaretçiye dönüştürmek ve sizeof. Belleği okuyan işlemler (*p, p->uye, p[i], fonksiyon işaretçisi çağrısı) ise yine unsafe istiyor. Tek ifade için unsafe(ifade) sözdizimi de eklendi. Güncellenmiş kuralları tamamen açmak için LangVersion=preview, AllowUnsafeBlocks ve updated-memory-safety-rules özelliği gerekiyor. Bu kısım henüz önizleme aşamasında, üretim kodunda beklemek doğru olur.

Geçiş için ne yapmalı? (Upgrade checklist)

  1. RC2 SDK'yı bir CI dalında kurun ve TargetFramework değerini net11.0 yapıp derleyin.
  2. "Breaking changes in .NET 11" ve "C# 15 compiler breaking changes" sayfalarını projenizin kullandığı alanlar için okuyun.
  3. Yeni dil özelliklerini, ekip sürümü benimseyene kadar yalnız yeni kodda kullanın; union ve closed özellikle alan modeli (domain model) tasarımında fark yaratıyor.
  4. NuGet minimum yayın yaşı ayarını CI'da açmayı değerlendirin.

.NET 11 tek numaralı bir sürüm olduğu için standart süreli destek (STS) sürümü. Uzun süreli destek isteyen kurumsal projeler için .NET 10 LTS geçerliliğini koruyor. Alesta WEB olarak müşteri projelerinde yeni ana sürümü genelde ilk yama sürümünden sonra canlıya alıyoruz; RC dönemini derleme ve test uyumluluğunu görmek için kullanıyoruz.

Sık sorulan sorular

.NET 11 ne zaman çıkıyor?

Microsoft son sürümü Kasım 2026 için hedefliyor. RC2 son ara sürüm.

RC2'yi üretimde kullanabilir miyim?

Evet, go-live lisansıyla geliyor ve Microsoft destek veriyor. Yine de çoğu ekip için son sürümü beklemek daha az iş çıkarır.

Union tipleri F#'taki discriminated union ile aynı mı?

Fikir benzer: bir değer belirli tiplerden biri olabilir ve derleyici eksik durumu yakalar. C# 15'teki biçim mevcut tipleri (record'lar gibi) durum olarak kullanıyor.

C# 15'i .NET 10 ile kullanabilir miyim?

Resmî olarak hayır. C# 15, .NET 11 ile destekleniyor; bazı özellikler (union gibi) çalışma zamanındaki yeni tiplere ihtiyaç duyuyor.

İlgili yazılar: Java 27 yenilikleri · Python 3.15.0 · Go 1.27 · Web yazılım hizmetleri · İletişim

Kapak fotoğrafı: Kevin Ku / Unsplash

Hazır mısınız?

Projenizi birlikte planlayalım

Haber sitesi, adisyon, QR menü ya da kurumsal web sitesi — ihtiyacınızı dinleyelim, demo hesabı açalım ve yazılı teklifimizi iletelim. Görüşme ücretsizdir.

WhatsAppAra