IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Değişim Deseni Eşleşmesi (Geliştiriciler için Nasıl Çalışır)

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

C#'ta PDF dosyalarıyla çalışmak, genellikle farklı belge türlerini, eylemleri veya veri kaynaklarını ele almayı içerir. Geleneksel olarak, geliştiriciler çeşitli giriş değerlerini ve türlerini veya çıktı kararlarını yönetmek için uzun if-else zincirlerine veya birbirine geçmiş switch ifadelerine güvenebilirlerdi. Ancak C#'ın switch desen eşleştirmesi gibi modern özellikleri sayesinde kodunuz çok daha nazik, okunabilir ve sürdürülebilir hale gelebilir.

Güçlü bir PDF kütüphanesi olan IronPDF ile birleştirildiğinde, switch desen eşleştirme, belge işleme için daha akıllı, daha temiz mantık oluşturmanızı sağlar. Bu makalede, C#'ın ileri desen eşleştirme özelliklerini — tür desenleri, özellik desenleri ve ilişkisel desenler gibi — IronPDF ile birlikte PDF oluşturma iş akışlarınızı nasıl düzene sokacağınızı keşfedeceğiz.

What is Switch Pattern Matching in C#?

Switch desen eşleştirme, C# 7'de tanıtılan ve sonraki sürümlerde sürekli iyileştirilen bir özelliktir. Sadece sabit değerleri eşleştiren geleneksel switch ifadelerinin aksine, desen eşleştirme, türleri, özellikleri ve koşulları tek bir ifade içinde değerlendirmenize olanak tanır. Aşağıdaki örnek, bu özelliğin nasıl çalıştığını göstermektedir.

Örnek Söz Dizimi

switch (input)
{
    case int i when i > 0:
        Console.WriteLine("Positive integer");
        break;
    case string s:
        Console.WriteLine($"It's a string: {s}");
        break;
    default:
        Console.WriteLine("Unknown type");
        break;
}

Bu kod, tür desenlerini, ilişkisel operatörleri ve bir boş sabit desenini kullanarak birden fazla durumu özlü bir şekilde ele alır. Bu teknik, daha öz sözdizimi ile kodun okunabilirliğini önemli ölçüde artırır ve daha karmaşık mantığı destekler.

Switch Desen Eşleştirme'yi IronPDF ile Neden Birleştirmelisiniz?

C# Switch Desen Eşleşmesi (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - IronPDF ana sayfası

IronPDF, HTML, resimler veya ham metinden PDF'ler oluşturmak ve manipüle etmek için güçlü bir .NET bileşenidir. Birçok gerçek dünya kullanım durumu, farklı giriş desenlerinin işlenmesini içerir: bazı belgeler URL'lerden kaynaklanabilir, diğerleri HTML dizgilerinden ve başka belgeler dosya yüklemelerinden.

Karmaşık koşullar altında ifadeleri test etmenin yerine, switch desen eşleştirme desen tabanlı mantığı verimli bir şekilde desteklemenize olanak tanır. Uygulamanızın farklı nesne türlerine, belirtilen sabitlere veya hatta Boole ifadelerine nasıl yanıt vereceğini tanımlamanıza izin verir, giriş ifadesini iş akışını yönlendirmek için kullanarak.

IronPDF'teki Yaygın Kullanım Durumları ve Desen Eşleştirme

Önceki örnekte temel sözdizimine baktık, ancak şimdi bunu uygulamada görelim. Aşağıdaki kod örnekleri, IronPDF ile C# desen eşleştirmenin birleşiminden yararlanan bazı gerçek dünya PDF görevleridir.

1. Tür ve Özellik Desenleriyle Birden Çok Giriş Formatını Ele Almak

Yönteminizin çeşitli giriş formatlarını kabul ettiğini varsayalım: HTML, bir Uri veya yerel bir .html dosyası. Tür desenlerini, özellik desenlerini ve null desenlerini kullanarak bu durumları zahmetsizce ayırt edebilirsiniz.

using System;
using System.IO;
using IronPdf;
class Program
{
    static void Main()
    {
        object input = new Uri("https://example.com"); // Try changing this to: "<html><body>Hello</body></html>" or new FileInfo("sample.html")
        var renderer = new ChromePdfRenderer();
        PdfDocument pdfDoc = input switch
        {
            string html when html.StartsWith("<html>") =>
                renderer.RenderHtmlAsPdf(html),
            Uri url =>
                renderer.RenderUrlAsPdf(url.ToString()),
            FileInfo { Extension: ".html" } file =>
                renderer.RenderHtmlAsPdf(File.ReadAllText(file.FullName)),
            null => throw new ArgumentNullException("Input was null."),
            _ => throw new ArgumentException("Unsupported input type for PDF conversion.")
        };
        pdfDoc.SaveAs("example-input-types.pdf");
        Console.WriteLine("PDF created: example-input-types.pdf");
    }
}

Burada, özellik deseni (FileInfo { Extension: ".html" }) ve null sabit deseni (case null), mantığı daha ifade edici ve sağlam hale getirir.

2. Pozisyonel ve Deklarasyon Desenleriyle PDF'leri Dinamik Olarak Biçimlendirmek

PdfRequest kaydında bir format dizgisi içeren bir kaydı kullandığınızı varsayalım. Pozisyonel desenler, deklarasyon desenler ve dizge sabitleri kullanarak PDF biçimlendirmesini özelleştirebilirsiniz.

using System;
using IronPdf;
public record PdfRequest(string Title, string Content, string Format);
class Program
{
    static void Main()
    {
        PdfRequest request = new("My Report", "<h1>Monthly Report</h1><p>Generated by IronPDF.</p>", "A4");
        var renderer = new ChromePdfRenderer();
        // Use fully qualified enum to avoid IronWord conflict
        renderer.RenderingOptions = request switch
        {
            PdfRequest { Format: "A4" } => new IronPdf.ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.A4
            },
            PdfRequest { Format: "Letter" } => new IronPdf.ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.Letter
            },
            _ => new IronPdf.ChromePdfRenderOptions
            {
                PaperSize = IronPdf.Rendering.PdfPaperSize.Legal // Fallback
            }
        };
        var pdf = renderer.RenderHtmlAsPdf(request.Content);
        pdf.SaveAs("example-formatted.pdf");
        Console.WriteLine("PDF created: example-formatted.pdf");
    }
}

Bu kullanım, ifadenin kaydın içinde karşılık gelen özelliği, beklenen değerlere dayalı mantıksal desenler izleyerek eşleştirdiği şekilde düşünülmüştür.

Çıktı Boyutları

C# Switch Desen Eşleşmesi (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - PDF çıktılarında boyut farkı

3. Rol Tabanlı PDF'ler ve Var ve Not Desenleri Kullanma

Kullanıcı rolleriyle başa çıkmak için var desenlerini ve not desenlerini kullanarak null veya beklenmedik durumların önüne geçin.

using System;
using IronPdf;
public abstract record UserRole;
public record Admin(string Email) : UserRole;
public record Viewer(string Email) : UserRole;
public record Guest() : UserRole;
class Program
{
    static void Main()
    {
        UserRole currentUser = new Admin("admin@example.com"); // Try changing to Viewer or Guest
        var pdf = currentUser switch
        {
            Admin { Email: var email } =>
                new ChromePdfRenderer().RenderHtmlAsPdf($"<h1>Admin Dashboard</h1><p>Email: {email}</p>"),
            Viewer =>
                new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Viewer Summary</h1><p>Access limited.</p>"),
            Guest =>
                new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Guest Mode</h1><p>Please sign in.</p>"),
            not null =>
                throw new UnauthorizedAccessException("Unknown role type."),
            null =>
                throw new ArgumentNullException("Role cannot be null.")
        };
        pdf.SaveAs("example-role.pdf");
        Console.WriteLine("PDF created: example-role.pdf");
    }
}

Bu yapı, geçici değişken bildirimleri gibi var email'e dayalı güvenliği ve kodun okunabilirliğini artırır. Aşağıdaki resim, farklı giriş değerlere dayalı oluşturulan farklı PDF belgelerini göstermektedir.

C# Switch Desen Eşleşmesi (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - Rol bazlı çıktı

4. Kullanıcı Verilerine Dayalı İlişkisel Desen Eşleştirme

Kullanıcı seviyelerine bağlı olarak farklı PDF'ler oluşturmanız mı gerekiyor? Girişin belirli bir aralığa girip girmediğini test etmek için iki ilişkisel desen kullanmayı deneyin.

using System;
using IronPdf;
class Program
{
    static void Main()
    {
        int userScore = 85; // Try other values: 45, 70, 101
        string message = userScore switch
        {
            < 60 => "Needs Improvement",
            >= 60 and < 80 => "Satisfactory",
            >= 80 and <= 100 => "Excellent",
            _ => "Invalid score"
        };
        var html = $"<h1>Score Report</h1><p>Score: {userScore}</p><p>Result: {message}</p>";
        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        pdf.SaveAs("example-score.pdf");
        Console.WriteLine("PDF created: example-score.pdf");
    }
}

İlişkisel operatörler ve boole ifadeleri, kodu özlü ve ifade edici kılar.

Çıktı

C# Switch Desen Eşleşmesi (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Puan bazlı çıktı

Projelerinizde Bu Deseni Uygulama İpuçları

C# Switch Desen Eşleşmesi (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - C# Desen Eşleme Kopya Çekme Tablosu

  • Temiz ve değişmez veri nesneleri için kayıt türleri kullanın.
  • Daha temiz mantık için switch ifadelerini if-else ağaçlarına tercih edin.
  • Önemsiz eşleşmeleri göz ardı etmek için olumsuz desenler ve görmezlikten gelme desenleri (_) kullanın.
  • Bilinmeyen girişleri yakalamak için varsayılan durumlar ekleyin.
  • Okunabilirlik için karmaşık durumları yardımcı yöntemlere bölün.

Gerçek Dünya Faydaları

  • Daha Temiz Kod: Artık derinlemesine iç içe geçmiş if-else veya switch-case blokları yok
  • Daha Kolay Test: İzole desen durumları, birim testi basitleştirir
  • Esneklik: Yeni giriş türleri eklerken mantığı kolayca genişletin
  • Daha İyi Sorun Ayrışımı: Girdilere/çıktılara sadece dönüşüm üzerine odaklanın

Sonuç: PDF Mantığınızı Modernize Edin

Switch desen eşleştirme, sadece sözdizimsel bir gelişme olmaktan öte, daha güvenli, daha ifade edici kod yazmak için güçlü bir paradigmadır. IronPDF'nin esnek render yetenekleriyle birleştiğinde, minimal kod ile daha akıllı ve ölçeklenebilir belge üretim hatları oluşturabilirsiniz.

Bir rapor oluşturucu, belge ön izleyici veya dinamik bir şablon sistemi kuruyorsanız, IronPDF uygulamanıza desen eşleştirme eklemeyi deneyin. Netlik, kontrol ve sürdürülebilirlikteki faydalarını hızlıca göreceksiniz.

IronPDF'yi Kendiniz Denemek İster Misiniz?

Ücretsiz deneme sürümünü indirin ve IronPDF'nin güçlü özelliklerini bir lisans satın almadan önce kendiniz deneyin.

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