İç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’te Union Types: Eksik Parça Nihayet Geldi
Geliştirici Araçları Yapay Zeka API tasarımı, C# 15, hata yönetimi, pattern matching, sonuç tipi, tip güvenliği, union types Aşkın KILIÇ 04/04/2026 0 Yorumlar

C# 15’te Union Types: Eksik Parça Nihayet Geldi

C# 15’te Union Types: Eksik Parça Nihayet Geldi
📑 İçindekiler
  1. Neden bu kadar geç kaldı?
  2. Kod nasıl görünüyor?
  3. Küçük startup için ne ifade ediyor?
  4. Enterprise seviyede neden daha kıymetli?
  5. Nerede parlıyor, nerede biraz ham kalıyor?
  6. Sahada nasıl yaklaşırım?
  7. Kullanırken dikkat edeceğim noktalar neler?
  8. Sıkça Sorulan Sorular
  9. C# 15 union types nedir?
  10. switch ifadelerinde neden önemli?
  11. Mevcut abstract class yerine kullanılabilir mi?
  12. .NET uygulamalarında nerede başlamak mantıklı?
  13. Kaynaklar ve İleri Okuma

⏱️ 5 dk okuma📅 4 Nisan 2026🔄 Güncelleme: 16 Temmuz 2026

C# tarafında yıllardır eksik duran bir parça vardı… işin aslı şu ki, çoğu geliştirici bunu başka dillerde görüp “keşke bizde de olsa” diyordu. C# 15 ile gelen union anahtar sözcüğü tam da o boşluğu dolduruyor. Ben ilk kez F# tarafında discriminated union mantığını kurcaladığımda, “Bu kadar net ve güvenli bir model niye C#’ta yok?” diye bayağı söylenmiştim. Şimdi tablo değişiyor.

İlgili içerik: C# 15 Önizleme: Union, Closed ve Yeni Özellikler

Açık konuşayım, bu özellik sadece “güzel bir dil eklentisi” değil. Kurumsal tarafta, özellikle hata yönetimi, sonuç tipi modelleme. Farklı nesne türlerini tek bir kontratta toplama işlerinde bayağı iş görüyor — bence çok yerinde bir karar —. Geçen yıl Şubat 2025’te bir finans müşterisinde API dönüşlerini sadeleştirirken aynı sorunu yaşamıştık: ya object kullanıp belirsizliğe teslim olacaktık ya da gereksiz kalıtım zincirleri kuracaktık (ki bu çoğu kişinin gözünden kaçıyor). İkisi de idare eder gibi görünüyordu ama pratikte çamur gibiydi.

💡 Bilgi: Union type, bir değerin tanımlı ve kapalı bir tip kümesinden yalnızca biri olmasını sağlıyor. Yanı “ya şudur ya budur” diyorsun; üçüncü ihtimale kapı açmıyorsun.

Neden bu kadar geç kaldı?

Küçük bir detay: Aslında dur, önce şunu söyleyeyim: C# zaten pattern matching konusunda güçlüydü. Ama güçlü olması, her problemi çözdüğü anlamına gelmiyor. object kullandığınızda compiler size pek yardım etmiyor; marker interface veya abstract base class kullandığınızda işe kapalı bir küme elde edemiyorsunuz. Yanı derleyici “tamam kardeşim, bu iş burada bitti” demiyor.

Ben bunu en net 2019’da kendi lab ortamımda görmüştüm. Küçük bir envanter servisinde ErrorOrValue benzeri yapı kurmaya çalışıyorduk. İlk başta basit geldi. Sonra iki yeni hata tipi eklendi, ardından üçüncü ekip kendi exception sınıfını dayattı… derken sistem genişledi ama kontrol kayboldu. İşte union types’ın olayı tam burada başlıyor: tip seti kapanıyor ve compiler bunu biliyor.

Ha bu arada, F# bilenler için sürpriz yok; onlar buna zaten alışık. Ama C#’ın sunduğu deneyim daha “native”. Mevcut pattern matching bilgisini çöpe atmıyorsun, üstüne yeni bir katman ekliyorsun. Bu bence önemli çünkü ekiplerde herkes F# bilmiyor ama C# bilen çok var.

Yaklaşım Avantaj Sorun
object Baskısız, hızlı başlar Tip güvenliği zayıf
İnterface / base class Daha düzenli görünür Kümeyi kapatamazsın
union Kapatılmış tip seti + exhaustive match .NET 11 ön izleme dönemi olduğu için erken aşama riskleri var

Kod nasıl görünüyor?

Sade örnekle gidelim. Mesela evcil hayvanları modellemek istiyorsunuz:

Durun, bir saniye.

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");
Console.WriteLine(pet.Value);
string name = pet switch
{
Dog d => d.Name,
Cat c => c.Name,
Bird b => b.Name,
};

Şahsen, Bunun hoş tarafı şu: Pet, rastgele her şeyi tutmuyor; yalnızca belirlediğiniz üç tipi tutuyor. Compiler da bunu biliyor ve switch yazarken sizden eksiksiz eşleşme bekliyor. Kısacası “default koyayım da kurtulayım” devri biraz geride kalıyor.

Aslında, Lafı gevelemeden söyleyeyim: bu yapı özellikle domain-driven design tarafında elinizi rahatlatır. Mesela ödeme akışında CardPaymentResult, BankTransferResult, PaparaResult? gibi farklı case’leri tek yerde toplamak mümkün olurken saçma sapan inheritance ağacı kurmak zorunda kalmazsınız.

Küçük startup için ne ifade ediyor?

Küçük ekiplerde hız önemli ama hızın bedeli çoğu zaman teknik borç oluyor. Startuplarda genelde ilk hafta herkes mutlu; üçüncü ayda işe kimse kimin ne döndürdüğünü bilmiyor. Union types burada kodu sıkılaştırıyor ama fazla ritüel de istemiyor.

Eğer 4-5 kişilik bir ürün ekibiniz varsa ve backend’i.NET ile yazıyorsanız, bu özellik sizi özellikle API response modellerinde toparlar. Bir arkadaşım Kasım 2024’te İzmir’de küçük bir SaaS girişiminde benzer modeli manuel olarak taklit etmişti; iki sprint sonra ekip “neden bunu derleyiciye bırakmadık ki?” diye pişman olmuştu… haklılardı.

Enterprise seviyede neden daha kıymetli?

İtiraf edeyim, Büyük organizasyonlarda mesele sadece doğruluk değil; bakım maliyeti de var (ciddiyim). AZ-305 sınavına hazırlanırken bile hep aynı şeyi düşünürdüm: mimarı kararların uzun vadeli etkisi kısa vadeli kazançtan daha önemli. Union type burada tam o çizgide dürüyor.

Bir dakika — bununla bitmedi.

Union types’ın asıl gücü “çok şey yapması” değil; yanlış şeyi yaptırmaması.
Derleyicinin sizi dürtmesi bazen sınır bozucu olur…
ama prod ortamında gece uykusunu kurtaran şey de tam olarak budur.

Nerede parlıyor, nerede biraz ham kalıyor?

Bayağı iyi olduğu yerler belli: result modeling, validation flow’lar, parse edilmiş veri ayrıştırma işleri. Birbirine alakasız türleri tek sözleşmede toplamak istediğiniz anlar. Mesela de de null kontrolünü düzgün yapmak isteyen ekiplerde güzel oturur.

Aslında, Ama beklentiyi abartmayalım. Kağıt üstünde iyi görünen her özellik gibi bunun da erken dönem gölgeleri olabilir..NET 11 Preview 2 ile geldiği için bazı araç zincirlerinin henüz neredeyse tamamen oturmamış olması normaldir (mesela IDE davranışları veya analizörler). Yanı evet, yenilik fena değil… İlginç, değil mi? fakat üretime koşmadan önce birkaç tür test etmek şart.

  • Daha temiz kontrat: Hangi tiplerin mümkün olduğu açıkça belli olur.
  • Daha iyi exhaustive check: Derleyici eksik case’leri yakalar.
  • Daha az inheritance baskısı: Kalıtım zinciri kurmak gerekmez.
  • Dikkat: Erken aşama risklerini göz önünde bulundurun.

Sahada nasıl yaklaşırım?

Açık konuşayım, ben böyle özellikleri hemen “her yere yayalım” kafasında almıyorum. Önce dar bir kullanım alanı seçerim; mesela sadece API response modelleri ya da command result sınıfları gibi yerlerde denerim. Logosoft’ta geçen sene yaptığımız bir Azure entegrasyonunda da böyle ilerledik: önce küçük yüzey alanı seçtik, sonra yaygınlaştırdık.

E tabiî büyük şirketlerde mesele sadece kod yazmak değil; governance var, code review var, eğitim var… O yüzden union type geldi diye mevcut pek çok abstract class yapılarını silmek doğru olmaz. Hatta bazı yerlerde eski yaklaşım hâlâ daha okunaklı olabilir.

Neyse uzatmayalım: benim tavsiyem şu — eğer domain’inizde gerçekten “yalnızca şu üç-dört seçenek geçerli” diyebiliyorsanız union types’a bakın! Yok eğer tip sayısı sürekli artıyorsa ya da dış sistemler sözleşmeyi sürekli zorluyorsa önce tasarımı düzeltin; özellik tek başına mucize yaratmaz.

Kullanırken dikkat edeceğim noktalar neler?

  1. Kapalılık gerçekten gerekli mi?
  2. Ekip anlayacak mı?
  3. Teslim zinciri hazır mı?
  4. null senaryoları net mi?
  5. Bence burada en kritik konu sadelikle disiplin arasındaki dengeyi tutturmak. Sadece modern görünmek için kullanırsanız ters teper; ama doğru yerde kullanırsanız bayağı temiz sonuç veriyor.

    Şimdi gelelim pratik okumaya…

    Sıkça Sorulan Sorular

    C# 15 union types nedir?

    C# 15’te gelen union, bir değişkenin önceden tanımlanmış birkaç tipten yalnızca biri olmasını sağlar. Derleyici de bu setin dışına çıkılmasına izin vermez.

    switch ifadelerinde neden önemli?

    Eksen noktası burada exhaustive pattern matching oluyor. Yanı tüm case’leri kapsadığınızdan emin olunuyor (buna dikkat edin). Default branch’e ihtiyaç azalıyor.

    Mevcut abstract class yerine kullanılabilir mi?

    Bazı senaryolarda evet, ama hepsinde değil. Eğer ortak davranıştan çok kapalı tip kümesi önemliyse union daha doğru seçim olur.

    .NET uygulamalarında nerede başlamak mantıklı?

    Bir şey dikkatimi çekti:

    Küçük başlayın: API response, validation result, domain event sonucu gibi alanlar iyi adaydır. Büyük refactor yerine kontrollü pilot öneririm.

    Kaynaklar ve İleri Okuma

    C# 15 ile Union Types duyurusu — Microsoft.NET Bloğu

    C# resmî dokümantasyonu — Microsoft Learn

    Pattern Matching rehberi — Microsoft Learn

    Microsoft Agent Framework 1.0: Ajanlar Artık Ciddileşti

    CodeQL Autofix Raporları Artık Daha Gerçekçi

    GitHub Güvenliği:
    Küçük Repoda Büyük Açıkları Kapatmak

🤖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

npm Stage-Only Token ile Yayını Onaya Bağlayın
npm Stage-Only Token ile Yayını Onaya Bağlayın18 Eyl 2026
Google Search ile Yarışa Hazırlanmanın 3 Yolu
Google Search ile Yarışa Hazırlanmanın 3 Yolu12 Eyl 2026
Copilot CLI'da C++ Kod Zekası: Whole Codebase Indexing
Copilot CLI'da C++ Kod Zekası: Whole Codebase Indexing27 Eyl 2026
Agents League Hackathon 2026: Enterprise Agents Kategorisi Rehberi
Agents League Hackathon 2026: Enterprise Agents Kategorisi Rehberi18 Haz 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 API tasarımı C# 15 hata yönetimi pattern matching sonuç tipi tip güvenliği union types
Önceki yazı

GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen

Sonraki yazı

Copilot Cloud Agent İçin Kurumsal Firewall: Kontrol Sizde

İlginizi Çekebilir

GPT-6 Model Seçimi: Reasoning Effort ve Araç Uyumu
Aşkın KILIÇ 0

GPT-6 Model Seçimi: Reasoning Effort ve Araç Uyumu

05/10/2026
Work IQ Developer Tools ile Copilot Plugin Paketleme
Aşkın KILIÇ 0

Work IQ Developer Tools ile Copilot Plugin Paketleme

04/10/2026
GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
Aşkın KILIÇ 0

GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri

04/10/2026

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • GPT-6 Model Seçimi: Reasoning Effort ve Araç Uyumu
    05/10/2026 GPT-6 Model Seçimi: Reasoning Effort ve Araç Uyumu
  • Cosmos DB Mirroring: VNet Gateway ile Kapalı Ağda Kurulum
    05/10/2026 Cosmos DB Mirroring: VNet Gateway ile Kapalı Ağda Kurulum
  • Work IQ Developer Tools ile Copilot Plugin Paketleme
    04/10/2026 Work IQ Developer Tools ile Copilot Plugin Paketleme
  • GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
    04/10/2026 GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
  • Azure Cosmos DB Shell Artık Data Explorer İçinde
    04/10/2026 Azure Cosmos DB Shell Artık Data Explorer İçinde
  • 25 Dolar Altında Yapay Zeka Uygulaması mı? İşte Nasıl Yapılır!
    10/03/2026 25 Dolara Yapay Zeka Uygulaması Nasıl Yapılır?
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
    18/03/2026 Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • 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

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 OpenAI azure sdk Azure SQL bulut bilişim CI/CD 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 Entra ID Microsoft Foundry otomasyon performans Pull Request RAG REST API SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka 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ı 469 yazı 🏗️ Bulut Altyapı 378 yazı 🤖 Yapay Zeka 314 yazı 🔧 DevOps 260 yazı ☁️ Microsoft Azure 254 yazı 🔒 Güvenlik & Kimlik 214 yazı 🏢 Kurumsal Teknoloji 96 yazı 📊 Veri & Analitik 66 yazı 🐳 Konteyner & Kubernetes 61 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← GitHub Copilot Cloud Agent İçi...
    Copilot Cloud Agent İçin Kurum... →
    📩

    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