İç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.

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

Visual Studio 2026 Tema Renkleri: Artık IDE Sizin Dediğiniz Gibi
Visual Studio 2026 Tema Renkleri: Artık IDE Sizin Dediğiniz Gibi15 Haz 2026
Visual Studio'da GitHub Copilot: Temmuz 2026 Güncellemesi
Visual Studio'da GitHub Copilot: Temmuz 2026 Güncellemesi3 Ağu 2026
OpenAI Neden Bir Medya Şirketi Satın Aldı: TBPN
OpenAI Neden Bir Medya Şirketi Satın Aldı: TBPN5 Nis 2026
azd 1.26 Geldi: tool, exec ve Multi-Layer Provisioning Notları
azd 1.26 Geldi: tool, exec ve Multi-Layer Provisioning Notları28 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

Code Scanning'e "Mitigated" Uyarı Kapatma Nedeni Eklendi
Aşkın KILIÇ 0

Code Scanning’e “Mitigated” Uyarı Kapatma Nedeni Eklendi

20/08/2026
CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi
Aşkın KILIÇ 0

CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi

20/08/2026
MSSQL v1.45: SQL Formatter, Azure SQL Provisioning ve
Aşkın KILIÇ 0

MSSQL v1.45: SQL Formatter, Azure SQL Provisioning ve

20/08/2026

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Code Scanning'e "Mitigated" Uyarı Kapatma Nedeni Eklendi
    20/08/2026 Code Scanning’e “Mitigated” Uyarı Kapatma Nedeni Eklendi
  • CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi
    20/08/2026 CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi
  • MSSQL v1.45: SQL Formatter, Azure SQL Provisioning ve
    20/08/2026 MSSQL v1.45: SQL Formatter, Azure SQL Provisioning ve
  • SQL Server Express'ten Azure SQL Free Tier'a Geçiş
    20/08/2026 SQL Server Express’ten Azure SQL Free Tier’a Geçiş
  • GitHub Copilot App: My Work ile İşlerini Yönetmek
    19/08/2026 GitHub Copilot App: My Work ile İşlerini Yönetmek
  • 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ı
  • 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ı
  • 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 Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • ASP.NET Core 2.3 İçin Saat İşliyor: Ne Yapmalı?
    07/04/2026 ASP.NET Core 2.3 İçin Saat İşliyor: Ne Yapmalı?
  • 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

Code Scanning'e "Mitigated" Uyarı Kapatma Nedeni Eklendi
Geliştirici Araçları Güvenlik & Kimlik

Code Scanning’e “Mitigated” Uyarı Kapatma Nedeni Eklendi

20/08/2026 Aşkın KILIÇ
CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi
Geliştirici Araçları Güvenlik & Kimlik

CodeQL 2.26.3: Actions Sorguları ve JavaScript Modellemesi

20/08/2026 Aşkın KILIÇ
MSSQL v1.45: SQL Formatter, Azure SQL Provisioning ve
DevOps Geliştirici Araçları Microsoft Azure

MSSQL v1.45: SQL Formatter, Azure SQL Provisioning ve

20/08/2026 Aşkın KILIÇ
SQL Server Express'ten Azure SQL Free Tier'a Geçiş
Bulut Altyapı Geliştirici Araçları Microsoft Azure

SQL Server Express’ten Azure SQL Free Tier’a Geçiş

20/08/2026 Aşkın KILIÇ
GitHub Copilot App: My Work ile İşlerini Yönetmek
Geliştirici Araçları Yapay Zeka

GitHub Copilot App: My Work ile İşlerini Yönetmek

19/08/2026 Aşkın KILIÇ
VS Code Python Environments Eklentisi Genel Kullanıma Açıldı
Bulut Altyapı Geliştirici Araçları

VS Code Python Environments Eklentisi Genel Kullanıma Açıldı

19/08/2026 Aşkın KILIÇ
Microsoft, 2026 Gartner Cloud-Native Platform Raporunda
Bulut Altyapı Microsoft Azure Yapay Zeka

Microsoft, 2026 Gartner Cloud-Native Platform Raporunda

19/08/2026 Aşkın KILIÇ
Azure Cosmos DB VS Code Eklentisi: Ajanlar İçin Yeni Araçlar
Bulut Altyapı Geliştirici Araçları Yapay Zeka

Azure Cosmos DB VS Code Eklentisi: Ajanlar İçin Yeni Araçlar

19/08/2026 Aşkın KILIÇ
Canvases: Ajanlı Copilot Akışlarını Görünür Kılan Katman
Geliştirici Araçları Yapay Zeka

Canvases: Ajanlı Copilot Akışlarını Görünür Kılan Katman

18/08/2026 Aşkın KILIÇ
Windows Terminal Preview 1.25: Yeni Ayarlar ve Kitty Desteği
Bulut Altyapı Geliştirici Araçları

Windows Terminal Preview 1.25: Yeni Ayarlar ve Kitty Desteği

18/08/2026 Aşkın KILIÇ
Azure Pipelines'a Apple Silicon ve Xcode 27 Geldi
Bulut Altyapı DevOps

Azure Pipelines’a Apple Silicon ve Xcode 27 Geldi

18/08/2026 Aşkın KILIÇ
BlockOnPossibleDataLoss=True: Neden Dostunuz?
DevOps Geliştirici Araçları Güvenlik & Kimlik Microsoft Azure

BlockOnPossibleDataLoss=True: Neden Dostunuz?

18/08/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ı Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure Functions Azure OpenAI azure sdk Azure SQL bulut bilişim C++ CI/CD copilot Copilot CLI DevOps DevSecOps 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 Microsoft Agent Framework Microsoft Azure Microsoft Foundry MSVC otomasyon performans Pull Request Python RAG SEO uyumlu verimlilik veri yönetimi Visual Studio 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ı 339 yazı 🏗️ Bulut Altyapı 280 yazı 🤖 Yapay Zeka 240 yazı 🔧 DevOps 198 yazı ☁️ Microsoft Azure 186 yazı 🔒 Güvenlik & Kimlik 161 yazı 🏢 Kurumsal Teknoloji 65 yazı 📊 Veri & Analitik 57 yazı 🐳 Konteyner & Kubernetes 47 yazı 📧 Microsoft 365 21 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