Alesta WEB

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.

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:
| Alan | Değişiklik |
|---|---|
| Kütüphaneler | Parç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 / MSBuild | Dosya 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 |
| NuGet | Paketin 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 Core | QuickGrid sanallaştırma API'leri artık deneysel değil |
| .NET MAUI | XAML olmadan, C# ile arayüz yazarak uygulama oluşturma; Apple Icon Composer varlıkları |
| Windows Forms | Yeni 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:
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:
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:
List<string> names = [with(capacity: values.Length * 2), .. values];
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO", "hello"];
// set tek öğe içerirExtension indexer: C# 14'te gelen extension bloklarına artık indexer da yazılabiliyor:
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:
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)
- RC2 SDK'yı bir CI dalında kurun ve
TargetFrameworkdeğerininet11.0yapıp derleyin. - "Breaking changes in .NET 11" ve "C# 15 compiler breaking changes" sayfalarını projenizin kullandığı alanlar için okuyun.
- 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.
- 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.
Kaynaklar (References)
İ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

