IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Ayrımlı Birlikleri (Geliştiriciler için Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 23 Nisan 2026

Dinamik PDF oluşturma üzerinde çalışan bir .NET geliştiricisi olarak, genellikle belirli türleri temsil etmeniz ve yönetmeniz gerekir — farklı doküman verileri türleri, günlük mesajları, kullanıcı rolleri veya dışa aktarma seçenekleri düşünün. Bu noktada, C# ayrım yapıcı birlik kavramı devreye girer.

C#'ın F# veya Rust gibi doğal ayrım yapıcı birlik desteği olmamasına rağmen, ayrım yapıcı birlikleri etkili bir şekilde simüle edebilirsiniz. Bu blog yazısında, bir C# dilinde ayrım yapıcı birlik türünün nasıl tanımlanacağını ve kullanılacağını inceleyeceğiz, IronPDF ile gerçek dünya PDF işlemlerine nasıl uygulanacağını göstereceğiz ve bu desenin sağladığı faydaları keşfedeceğiz — özellikle desen eşleştirme ile birleştirildiğinde.

What Are Discriminated Unions in C#?

Ayrım yapıcı birlikler, aynı zamanda etiketli birlikler veya yapılar türleri olarak da bilinir, bir değişkenin, her biri benzersiz bir durum tanımlayıcı ile ilişkili sınırlı bir dizi olası seçenekten bir değer tutmasına izin verir.

F# gibi diğer dillerde, bunları birlik anahtar kelimesi kullanarak tanımlayabilirsiniz. C# bu özelliği doğal olarak sağlamasa da, geliştiriciler kayıtlar, sınıflar ve anahtar ifadeler gibi akıllı kombinasyonlar kullanarak bunları taklit edebilirler.

Örneğin:

public abstract record PdfAction;
public record GenerateReport(string ReportName) : PdfAction;
public record LogError(string Message) : PdfAction;
public record ExportToExcel(string FilePath) : PdfAction;

Yukarıdaki her kayıt, birliğin tek bir durumunu temsil eder. Temel PdfAction türü ayırt edicidir.

IronPDF İş Akışlarında Ayrım Yapıcı Birliklerin Önemi

IronPDF kullanarak bir PDF rapor oluşturucu geliştiriyor olduğunuzu ve bir kullanıcının girdilerine bağlı olarak farklı işlemler gerçekleştirmeniz gerektiğini hayal edin — belki bir PDF oluşturmak, bir hatayı günlüğe kaydetmek veya verileri dışa aktarmak.

C#'da ayrımcı birlikleri kullanmak, bu opsiyon türlerini temiz bir şekilde temsil etmenizi sağlar, bu da derleme zamanı güvenliği, daha az hata ve daha net bir mantıkla sonuçlanır.

IronPDF ile nasıl kullanabileceğinize dair bir örnek:

void HandlePdfAction(PdfAction action)
{
    switch (action)
    {
        case GenerateReport r:
            var pdf = new IronPdf.HtmlToPdf().RenderHtmlAsPdf("<h1>" + r.ReportName + "</h1>");
            pdf.SaveAs(r.ReportName + ".pdf");
            break;
        case LogError e:
            Console.WriteLine("Logging Error: " + e.Message);
            break;
        case ExportToExcel x:
            Console.WriteLine("Exporting to Excel at " + x.FilePath);
            break;
        default:
            throw new NotSupportedException("Unknown action");
    }
}

Bu yaklaşım, kodunuzu düzenli ve sağlam tutar ve geliştiren kişilerin tüm olası seçenekleri tek bir konumda anlamalarını kolaylaştırır.

Simulating Discriminated Unions in C# – Struct vs. Record vs. Class

C# birlik anahtar kelimesine sahip olmasa da, ayrım yapıcı birlikleri simüle edebilirsiniz:

  • Kayıtlar: Değişmez veri için idealdir ve desen eşleştirmeyi düzgün bir şekilde destekler.
  • Sınıflar: Devralma ve referans semantiği ile daha esnektir.
  • Yapılar: Değer türleri için kullanışlıdır, ancak referans türleri veya devralma ile uğraşırken daha az esnektir.

C# Ayrıcalıklı Birleşimler (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Struct vs. Record vs. Class

Eğer performans ve bellek düzeni önemliyse — örneğin yüksek geçişli PDF günlüğü gibi — yapı ayrım yapıcı birliklerini dikkatli bir şekilde kullanmayı düşünebilirsiniz:

public interface IAction { }
public readonly struct SaveAction : IAction
{
    public string FileName { get; }
    public SaveAction(string fileName) => FileName = fileName;
}

Not: Özellikle anahtar ifadelerine dayanırken, yapılarla bazı desen eşleştirme avantajlarını kaybedebilirsiniz.

Benefits of Using Discriminated Unions in C#

Bu yazılım mühendisliği desenini benimsemenin birkaç önemli avantajı vardır:

  • Derleme zamanı güvenliği: Anahtar ifadesinde eksik durumları çalışma zamanından önce yakalarsınız.
  • Daha net mantık: Adlandırılmış durumlarla işlemleri yazmak, açıklamak ve hakkında düşünmek daha kolaydır.
  • Sorumluluk ayrımı: Davranışları veriler üzerinden tip hiyerarşilerine değil, bunlara dayandırırsınız.
  • Yeniden yapılandırma kolaylığı: Durumları ekleme veya kaldırma daha basit hale gelir.

IronPDF ile birleştirildiğinde, kullanıcı girdilerini, işleme mantığını yönetmeyi veya farklı değer hatları ile dinamik şablonlar oluşturmayı kolaylaştırır.

IronPDF ile Ayrım Yapıcı Birlikleri Ne Zaman Kullanmalısınız

Bu desenin üstün olduğu bazı pratik senaryolar:

  • PDF Üretim İş Akışları: Belge yaşam döngüsündeki farklı adımlar (oluşturma, kaydetme, e-posta gönderme).
  • İzin Modelleri: Farklı kullanıcı erişim seviyelerini temsil edin.
  • Günlük Sistemleri: Günlük seviyeleri (bilgi, hata, hata ayıklama) için ayrım yapıcı birlik türlerini kullanın.
  • Birim Testleri: Test eylemlerini bakımlı mantık ağaçları için birlik türleri olarak tanımlayın.
  • Dışa Aktarma Seçenekleri: Çıkış hedeflerini PDF, Excel, Word gibi birlik örnekleri olarak temsil edin.

C# Ayrıcalıklı Birleşimler (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - .NET uygulamalarında ayrıcalıklı birleşimler için yaygın senaryolar

Örnek – UI Olaylarından PDF Eylemlerine Yönlendirme

Diyelim ki UI olaylarını yakalıyorsunuz ve bunları IronPDF görevlerine ayrım yapıcı birliklerle yönlendirmek istiyorsunuz:

public abstract record UserAction;
public record GeneratePdf(string HtmlContent, string FileName) : UserAction;
public record ShowMessage(string Text) : UserAction;
public record ExitApplication() : UserAction;
void OnUserEvent(UserAction action)
{
    switch (action)
    {
        case GeneratePdf pdf:
            var renderer = new IronPdf.HtmlToPdf();
            var document = renderer.RenderHtmlAsPdf(pdf.HtmlContent);
            document.SaveAs(pdf.FileName);
            break;
        case ShowMessage msg:
            MessageBox.Show(msg.Text);
            break;
        case ExitApplication:
            Application.Exit();
            break;
    }
}

Bu size açık mantıkla olayları temsil etmenize olanak tanır ve halka açık obje türlerine ve aşırı dinamik işlemlere olan bağımlılığı azaltır.

Future Outlook – Will C# Ever Support Native Discriminated Unions?

C#'ta yerel ayrım yapıcı birlik desteği ekleme önerisi zaten var, özellikle daha ifade edici tür sistemlerine olan artan taleple birlikte. Henüz birliğe gerçek bir anahtar kelime eklenmemiş olmasına rağmen, C# evrimleşmeye devam ediyor — kayıtlar, desen eşleştirme ve anahtar ifadeleri gibi özellikleri tam ayrım yapıcı birlik işlevselliğine daha yaklaştırıyor.

.NET geliştiricileri modern, fonksiyonel dostu dil yapıları ile ilgilenirse bu alanı yakından izlemek isteyeceklerdir.

Son Düşünceler

Yerel destek olmadan bile, C#'ta ayrım yapıcı birlikleri kullanmak,IronPDF uygulamalarındaki mantığı nasıl yapılandırdığınızı ve temsil ettiğinizi önemli ölçüde iyileştirebilir. Kayıtlar, anahtar ifadeleri ve temel sınıflardan faydalanarak kod tabanınızı daha okunabilir, sürdürülebilir ve hatalara karşı dayanıklı hale getireceksiniz — aynı zamanda PDF ile ilgili görevleri ele almak için daha beyan edici ve ifade edici bir yol açacaksınız.

Eğer modern, esnek .NET uygulamaları inşa eden bir yazılım mühendisi iseniz, bu desen alet çantanızda olmazsa olmazdır.

Bugün IronPDF Ücretsiz Deneyin

C# PDF oluşturma işinizi bir sonraki seviyeye taşımaya hazır mısınız? IronPDF'yi indirip ücretsiz bir deneme ile başlayın. İster HTML'den belgeler oluşturuyor, günlük ihraçları yapıyor, ister ayrım yapıcı birlikleri kullanarak raporlar otomatikleştiriyor olun — IronPDF uygulamaya hak ettiği güç ve performansı sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez