İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Yapay Zeka
  • C# 15 Önizleme: Union, Closed ve Yeni Özellikler
DevOps Microsoft Azure Yapay Zeka C# 15, Closed hierarchies, Koleksiyon ifadeleri, union types, Unsafe bellek güvenliği Aşkın KILIÇ 24/08/2026 2 Yorumlar

C# 15 Önizleme: Union, Closed ve Yeni Özellikler

C# 15 Önizleme: Union, Closed ve Yeni Özellikler
📑 İçindekiler
  1. Union types: izin verilen tipleri türde belirtmek
  2. Closed hierarchies: kalıtım ağacını sınırlamak
  3. Bellek güvenliği modelinin yeniden tasarımı (preview)
  4. Collection expression arguments
  5. Extension indexers
  6. Etiketli break ve continue
  7. Önizlemeyi denemek
  8. İlgili İçerikler
  9. Kaynaklar ve İleri Okuma
⏱️ 5 dk okuma📅 24 Ağustos 2026

C# 15, Kasım ayında.NET 11 ile birlikte yayımlanacak. Yeni dil özelliklerini beklemeden.NET 11 Preview 7 üzerinden bugün de deneyebilirsiniz. Sürüm; union types, closed hierarchies, güncellenmiş unsafe modelinin ilk önizlemesi, koleksiyon ifadelerine argüman geçme, extension indexer’lar ve etiketli break/continue gibi eklentiler getiriyor. Bu yazıda her özelliği kısa örneklerle ve resmi referanslara bağlayarak topluyorum.

Union types: izin verilen tipleri türde belirtmek

Bir union type, bir değerin hangi tipleri taşıyabileceğini tip sisteminde net biçimde ifade eder. object, marker interface veya soyut bir taban sınıfla çalıştığınızda çalışma zamanı tipi bu tabandan türeyen herhangi bir şey olabilir. Union ise değeri belirtilen case type‘lardan biriyle sınırlar; case tiplerinin birbiriyle kalıtım ilişkisi olması da gerekmez.

public record class Cat(string Name);
public record class Dog(string Name);
public record class Bird(string Name);
public union Pet(Cat, Dog, Bird);

Yukarıdaki Pet yalnızca Cat, Dog veya Bird tutabilir. Her case type Pet‘e örtük olarak dönüşür. Derleyici tüm kümeyi bildiği için null olmayan bir Pet üzerindeki switch ifadesi, discard veya default kolu olmadan da exhaustive kabul edilir:

Pet pet = new Dog("Rex");
string name = pet switch
{
Dog d => d.Name,
Cat c => c.Name,
Bird b => b.Name,
};

Union tipleri, izin verilen tip kümesini açıkça belirtme fikrinin somut bir ifadesi. Aynı fikir closed hierarchies’te ve planlanan closed enum’larda da uygulanıyor.

Closed hierarchies: kalıtım ağacını sınırlamak

Closed hierarchies aynı yaklaşımı kendi tasarladığınız sınıf hiyerarşilerine taşır. Bir sınıfa closed modifier’ı eklediğinizde sınıf örtük olarak abstract olur ve doğrudan türeyen tipler yalnızca aynı assembly içinde tanımlanabilir. Türetme uçlarını açık bırakmak yerine hangi alt tiplerin izinli olduğunu açıkça bildirmiş olursunuz.

public closed record class JobStatus;
public record class Queued : JobStatus;
public record class Running(int PercentComplete) : JobStatus;
public record class Completed(TimeSpan Elapsed) : JobStatus;
public record class Failed(string Error) : JobStatus;

Closed hiyerarşiler, union types ve planlanan closed enum’lar, izinli şekiller kümesini doğrudan tip sisteminde ifade eder. closed modifier’ının kalıtımla nasıl birleştiğine dair ayrıntılar için resmi closed modifier ve closed hierarchy patterns belgelerine bakılabilir.

Bellek güvenliği modelinin yeniden tasarımı (preview)

C# 15, unsafe‘in yeniden tasarımını başlatıyor: “burada pointer var” diyen bir sözdizim işareti olmaktan çıkıp, derleyicinin doğrulayamadığı ancak geliştiricinin üstlendiği bir sözleşmeye dönüşüyor. Bu,.NET 11 ve C# 15’te preview statüsünde bir özellik; model ve sözdizim.NET 12 ile C# 16 sürecinde değişebilir. Denemek için proje dosyasına açıkça opt-in eklemek gerekiyor:

<Features>$(Features);updated-memory-safety-rules</Features>
<LangVersion>preview</LangVersion>

Yeni modelde pointer tipleri için artık unsafe bağlamı zorunlu değil. Güvenli bir bağlamda pointer tipi bildirebilir, & ile adres alabilir, fixed statement kullanabilir, stackalloc‘u pointer’a dönüştürebilir ve unmanaged tip üzerinde sizeof uygulayabilirsiniz.

Pointer’ı dereference eden işlemler ise unsafe gerektirmeye devam ediyor: pointer indirection (*p), pointer üzerinden üye erişimi (p->m), pointer üzerinden eleman erişimi (p[i]), fixed-size buffer eleman erişimi ve function-pointer çağırma.

Bir üyenin imzasına unsafe modifier’ı eklendiğinde ise bu üye yalnızca unsafe bir bağlamdan çağrılabilir. Mevcut davranışa göre bu bir breaking change. Üye, çağıranlarının sözleşmeyi sağlamasını beklediğini bildirmiş oluyor; çağıran da ya bu koşulu sağlamalı ya da kendi bildiriminde unsafe modifier’ını ileterek güvensizliği yaymalıdır.

Önizleme özelliği olduğu için tasarım kesinleşmedi; ekip csharplang üzerinden geri bildirim topluyor.

Collection expression arguments

Koleksiyon ifadeleri birçok koleksiyon tipine dönüşebiliyor; ancak şimdiye kadar altta yatan constructor’a veya Create metoduna argüman geçirmek mümkün değildi. C# 15, en başa yazılan bir with(...) elemanı ekleyerek argümanları constructor’a veya factory metoduna iletmeyi sağlıyor. Bu, gelecek dictionary expressions söz dizimi için de gerekli bir temel; sözlükte çoğu zaman bir comparer belirtmek gerekir.

// Önce
List<string> names = new(capacity: values.Length * 2);
names.AddRange(values);
var set = new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "Hello", "HELLO" };
// Sonra (C# 15)
List<string> names = [with(capacity: values.Length * 2),.. values];
HashSet<string> set = [with(StringComparer.OrdinalIgnoreCase), "Hello", "HELLO"];

Extension indexers

C# 14, extension member kavramını genişletmiş; metotların yanına property ve operator eklemeye de izin vermişti. C# 15 ise extension indexer‘ları getiriyor: alıcı üzerinde tanımlıymış gibi indeksleme yapılabiliyor. Indexer’lar static olamayacağı için extension container’ın adlandırılmış bir receiver içermesi gerekiyor.

// Önce: yardımcı metot
public static class SequenceExtensions
{
public static int ElementAtIndex(this IEnumerable<int> sequence, int index)
=> sequence.ElementAt(index);
}
int third = numbers.ElementAtIndex(2);
// Sonra (C# 15): extension indexer
public static class SequenceExtensions
{
extension(IEnumerable<int> sequence)
{
public int this[int index] => sequence.ElementAt(index);
}
}
int third = numbers[2];

Etiketli break ve continue

İç içe döngülerde dıştaki döngüyü kırmak genellikle bir flag, goto veya ayrı bir metot gerektirir. C# 15 ile döngüye etiket verilip break veya continue bu etiketi doğrudan hedefleyebiliyor.

// Önce: dış döngüyü kırmak için flag
bool found = false;
foreach (Warehouse warehouse in warehouses)
{
foreach (Bin bin in warehouse.Bins)
{
if (bin.Sku == requestedSku && bin.Quantity > 0)
{
reserved = Reserve(bin);
found = true;
break;
}
}
if (found)
break;
}
// Sonra (C# 15): döngüye etiket verip doğrudan kır
scan: foreach (Warehouse warehouse in warehouses)
{
foreach (Bin bin in warehouse.Bins)
{
if (bin.Sku == requestedSku && bin.Quantity > 0)
{
reserved = Reserve(bin);
break scan;
}
}
}

Bu yaklaşımın görünür kazancı, niyetin ek bir bayrak değişkeni olmadan doğrudan koda yansıması.

Önizlemeyi denemek

Özellikleri değerlendirmek için.NET 11’i indirip mevcut uygulamalarda C# 15’i açmak yeterli. Tam referans ve tartışmalar için resmi kaynaklar aşağıda..NET 11 Preview 7 kapsamında yayımlanan diğer platform yeniliklerine bakmak isteyenler .NET 11 Preview 7 Yayınlandı: Öne Çıkan Yenilikler yazısına göz atabilir.

İlgili İçerikler

  • Claude Sonnet 5 GitHub Copilot’ta: Özellikler ve Geçiş
  • MSVC Build Tools Haziran 2026 Önizleme: Sessiz Ama Derin İyileştirmeler
  • Claude Opus 4.8 GitHub Copilot’ta: Özellikler ve Geçiş

Kaynaklar ve İleri Okuma

  • devblogs.microsoft.com
  • Explore new features available in C# 15 preview (Bill Wagner,.NET Blog)
  • What’s new in C# 15
  • C# 15 union types
  • Work with union types (tutorial)
  • Union types referansı
  • closed modifier referansı
  • Closed hierarchy patterns
  • Improving C# memory safety
  • Unsafe code referansı
  • Collection expressions referansı
  • Extension keyword referansı
  • dotnet/csharplang (dil tasarımı tartışmaları)
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

GitHub Copilot Build Performance: Proje Bazlı Analiz Geldi
GitHub Copilot Build Performance: Proje Bazlı Analiz Geldi8 May 2026
Azure Functions ile Uzun Süreli MCP Araçları Geliştirmek
Azure Functions ile Uzun Süreli MCP Araçları Geliştirmek18 Tem 2026
Azure IaaS: Bulut Altyapınızı Güçlendirecek Yeni Kaynaklar!
Azure IaaS: Bulut Altyapınızı Güçlendirecek Yeni Kaynaklar!9 Mar 2026
.NET 10.0.5 ile macOS Debugger Çökmesine Son: Saha Notları ve Pratik Tüyolar
.NET 10.0.5 ile macOS Debugger Çökmesine Son: Saha Notları ve Pratik Tüyolar21 Mar 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket C# 15 Closed hierarchies Koleksiyon ifadeleri union types Unsafe bellek güvenliği
Önceki yazı

Track organization code quality trends

Sonraki yazı

Visual Studio’da BYOM: Kendi AI Modelini Bağla

İlginizi Çekebilir

Gemini 3.8 Flash GitHub Copilot'ta Kullanıma Sunuldu
Aşkın KILIÇ 0

Gemini 3.8 Flash GitHub Copilot’ta Kullanıma Sunuldu

03/09/2026
GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
Aşkın KILIÇ 0

GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor

03/09/2026
Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
Aşkın KILIÇ 0

Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad

03/09/2026

2 comments

comments user
Tuğçe R. 25/08/2026 00:36

Union types’ı görmek gerçekten sevindirici, TypeScript’te alıştığımız bu özelliğin C#’a gelmesi epey zaman aldı. Closed hierarchies de discriminated union benzeri pattern’lar için çok işe yarayacak. Bu arada TypeScript tarafını takip edenler için şu yazı da güzeldi: https://www.askinkilic.com.tr/typescript-7-aralik-2025-native-port-nerede/

Yanıtla
comments user
Cem A. 25/08/2026 01:48

Union types’ı çok bekliyordum açıkçası, F# tarafından gelenler için özellikle büyük fark yaratacak. Closed hierarchies ile birlikte pattern matching daha da güçlenecek gibi görünüyor. Etiketli break/continue ise Java’dan aşina olduğum bir özellik, sonunda C#’a da geliyor.

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Gemini 3.8 Flash GitHub Copilot'ta Kullanıma Sunuldu
    03/09/2026 Gemini 3.8 Flash GitHub Copilot’ta Kullanıma Sunuldu
  • Kubernetes v1.37 HPA ile İş Yüklerini Sıfıra İndiriyor
    03/09/2026 Kubernetes v1.37 HPA ile İş Yüklerini Sıfıra İndiriyor
  • Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
    03/09/2026 Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
  • GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
    03/09/2026 GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
  • Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
    03/09/2026 Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

SİZİN İÇİN DERLEDİK

Gemini 3.8 Flash GitHub Copilot'ta Kullanıma Sunuldu
Microsoft Azure Yapay Zeka

Gemini 3.8 Flash GitHub Copilot’ta Kullanıma Sunuldu

03/09/2026 Aşkın KILIÇ
Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü
Bulut Altyapı Geliştirici Araçları Veri & Analitik

Microsoft SQL’de Hibrit Arama: Metin ve Vektörün Gücü

03/09/2026 Aşkın KILIÇ
GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor
Bulut Altyapı Geliştirici Araçları Yapay Zeka

GitHub Copilot AI Kodlamada Maliyeti Nasıl Düşürüyor

03/09/2026 Aşkın KILIÇ
Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad
Kurumsal Teknoloji Yapay Zeka

Ajanik Yapay Zekâ Terimleri: Loop, Harness ve Squad

03/09/2026 Aşkın KILIÇ
Visual Studio'da Çözüm Bazlı Renk Teması Nasıl Ayarlanır
Geliştirici Araçları Microsoft Azure

Visual Studio’da Çözüm Bazlı Renk Teması Nasıl Ayarlanır

02/09/2026 Aşkın KILIÇ
SPFx Dev Skills: Ajanların Bildiği ve Kaçırdığı Detaylar
DevOps Geliştirici Araçları Yapay Zeka

SPFx Dev Skills: Ajanların Bildiği ve Kaçırdığı Detaylar

02/09/2026 Aşkın KILIÇ
Microsoft Entra ID için Bicep Şablonları Genel Kullanıma
DevOps Güvenlik & Kimlik Microsoft Azure

Microsoft Entra ID için Bicep Şablonları Genel Kullanıma

02/09/2026 Aşkın KILIÇ
Kubernetes v1.37: etcd RangeStream ile Bellek Dostu Liste
Bulut Altyapı Konteyner & Kubernetes

Kubernetes v1.37: etcd RangeStream ile Bellek Dostu Liste

02/09/2026 Aşkın KILIÇ
Visual Studio'da GitHub Pull Request İnceleme Rehberi
DevOps Geliştirici Araçları Yapay Zeka

Visual Studio’da GitHub Pull Request İnceleme Rehberi

01/09/2026 Aşkın KILIÇ
Python in Visual Studio Code – November 2025 Release
Bulut Altyapı Geliştirici Araçları

Python in Visual Studio Code – November 2025 Release

01/09/2026 Aşkın KILIÇ
Azure SRE Agent'ı Connector Namespace ile Güçlendirmek
Bulut Altyapı Microsoft Azure Yapay Zeka

Azure SRE Agent’ı Connector Namespace ile Güçlendirmek

01/09/2026 Aşkın KILIÇ
Enterprise Live Migrations is now in public preview
Bulut Altyapı DevOps

Enterprise Live Migrations is now in public preview

01/09/2026 Aşkın KILIÇ

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps azure sdk Azure SQL bulut bilişim C++ CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka yapay zeka ajanları Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 432 yazı 🏗️ Bulut Altyapı 345 yazı 🤖 Yapay Zeka 289 yazı 🔧 DevOps 242 yazı ☁️ Microsoft Azure 231 yazı 🔒 Güvenlik & Kimlik 199 yazı 🏢 Kurumsal Teknoloji 83 yazı 📊 Veri & Analitik 62 yazı 🐳 Konteyner & Kubernetes 53 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← Track organization code qualit...
    Visual Studio’da BYOM: K... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS