IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Kayıt ve Sınıf (Geliştiriciler İçin Nasıl Çalışır)

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

C# dünyasında, verileri modellemek ve kapsüllemek için kullanılan iki ana yapı: sınıflar ve kayıtlar bulunmaktadır. Her ikisi de başvuru türüdür ancak amaçları, davranışları ve eşitliği nasıl ele aldıkları konusunda önemli ölçüde farklılık gösterirler. Bu kılavuz, bu farklılıkları inceleyecek, geliştiricilerin ihtiyaçlarına uygun doğru yapıyı seçmelerine yardımcı olacak açık örnekler ve pratik kullanımlar sunacaktır. Ayrıca, IronPDF kütüphanesi hakkında da bilgi edineceğiz.

C#'ta Sınıflar: Temeller

Sınıflar, C#'da nesne yönelimli programlamanın temel taşları olmuştur ve veri ve davranışları kapsüllemek için tasarlanmıştır. Referans türlerdir, yani aynı değerlere sahip iki sınıf örneği, iki ayrı nesne olarak kabul edilir. Bu ayırım, iki sınıf örneğini karşılaştırırken çok önemlidir; varsayılan karşılaştırma referans tabanlıdır, değer tabanlı değil.

public class Person
{
    public int Id { get; set; }
    public string FullName { get; set; }
}

Yukarıdaki örnekte, Person, Id ve FullName özelliklerine sahip bir sınıftır. İki Person örneği, aynı Id ve FullName değerlerine sahip olsa bile, varsayılan olarak eşit kabul edilmez çünkü bellek içerisinde iki farklı referanstır.

C#'ta Kayıtlar: Değişmez Veri Yapıları

C#'da tanıtılan kayıt türü, değiştirilemez veri yapıları oluşturmayı basitleştirmeyi amaçlayan ve geleneksel sınıf yapılarının güçlü bir alternatifini sunan daha yeni bir ektir. Sınıflardan farklı olarak, kayıtlar değer tabanlı eşitlik anlamını sunar, bu da onları veri aktarma nesneleri veya az ya da hiç davranışı olmayan küçük veri yapıları için ideal kılar.

public record Person(int Id, string FullName);

Yukarıdaki örnekte, kayıt tanımı daha özlüdür ve gereksiz kodları azaltır. Kayıtlar otomatik olarak yıkıcı olmayan mutasyon ve değer tabanlı karşılaştırmayı destekler. Aynı değerlere sahip iki kayıt örneği eşit kabul edilir, bu da değer semantikleriyle uyumludur.

Pratik Kullanımlar: Kayıt ve Sınıf Ne Zaman Kullanılır?

C#'da bir sınıf ve kayıt veya diğer veri yapıları arasında seçim yapmak, modellediğiniz verinin karmaşıklığına ve uygulamanızın gerektirdiği davranışlara bağlıdır. Sınıflar, kompleks veri yapıları için özel olarak tasarlanmıştır, davranışları (yöntemleri) içerecek şekilde ve gerektiğinde değiştirilebilir örnekler oluşturma imkanı tanır. Kayıtlar ise, değişmez özelliklerle tasarlanmış basit veri yapılarının mükemmel örnekleridir ve oluşturulduktan sonra sabit kalan veriler için idealdir.

Sınıflar, verileri ve davranışları kapsamak veya verilerin oluşturulduktan sonra manipüle edilmesi gerektiğinde idealdir. Bu esneklik, sınıfları çoğu geleneksel nesne yönelimli programlama senaryoları ve karmaşık veri yapıları oluştururken vazgeçilmez hale getirir.

Kayıtlar ise, özellikle veri değişmezliğinin önemli olduğu veya basit veri yapılarıyla ilgilenildiğinde, öne çıkar. Yerleşik değer tabanlı eşitliği ve özlü sözdizimi, onları veri aktarım nesneleri veya değer nesneleri için mükemmel hale getirir.

Değer Türleri ve Referans Türleri

C#'da değer türleri ve referans türleri arasındaki farkı anlamak çok önemlidir. Sınıflar referans türlerdir, yani değişkenler bellekdeki gerçek veriye bir referans tutar. Bu özellik, varsayılan referans tabanlı eşitlik karşılaştırmasına yol açar.

Kayıtlar, aynı zamanda referans türleri olmasına rağmen, yerleşik değer temelli eşitlik aracılığıyla değer semantiklerini taklit eder ve bu da onları karşılaştırmalarda biraz değer türleri gibi davranır hale getirir.

Kod Örnekleri: Sınıflar ve Kayıtlar Uygulama

Sınıf ve kayıt arasındaki farkları, sözdizimi ve davranışlarla vurgulamak üzere bir sınıf ve bir kayıt uygulayalım.

Sınıf Uygulaması:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }

    public Product(int id, string name)
    {
        Id = id;
        Name = name;
    }
}

Kayıt Uygulaması:

public record Product(int Id, string Name);

Kayıt uygulamasının kısalığı ve sadeliğine dikkat edin. Kayıt, yapılandırıcının, özelliklerin ve değer tabanlı eşitlik yöntemlerinin otomatik olarak üretilmesini sağlar.

Eşitliği Anlamak: Referans vs. Değer

C#'daki sınıf ve kayıt türleri arasındaki temel fark, eşitliği nasıl ele aldıklarıdır:

  1. Sınıflar, varsayılan olarak referans eşitliği kullanır, yani iki örnek aynı bellek konumunu işaret ediyorsa eşit olarak kabul edilir.

  2. Kayıtlar, varsayılan olarak değer eşitliğini kullanır, yani iki örnek, özelliklerinin aynı değerlere sahip olması durumunda eşit olarak kabul edilir.

Referans Eşitliği Örneği (Sınıf)

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

var classInstance1 = new Person { Id = 1, Name = "Iron Software" };
var classInstance2 = new Person { Id = 1, Name = "Iron Software" };
Console.WriteLine(classInstance1 == classInstance2); // Outputs: False

Aynı özellik değerlerine sahip iki sınıf örneği, bellek içinde farklı nesneler olduklarından eşit kabul edilmez.

Değer Eşitliği Örneği

public record Person(int Id, string Name);

var recordInstance1 = new Person(1, "Iron Software");
var recordInstance2 = new Person(1, "Iron Software");
Console.WriteLine(recordInstance1 == recordInstance2); // Outputs: True

Aynı özellik değerlerine sahip iki kayıt örneği varsayılan olarak eşit kabul edilir.

Gelişmiş Özellikler: Kayıtlar

Kayıtlar, değiştirilemez veri yapıları ve değer temelli eşitlik ihtiyaçlarına hitap eden çeşitli gelişmiş özelliklerle birlikte gelir. with ifadesi, mevcut bir kaydı kopyalayarak ve bazı özellikler değiştirilerek yeni bir kayıt örneği oluşturmanıza olanak tanır, bu da yıkıcı olmayan mutasyonu göstermektedir.

Kayıtlarla Yıkıcı Olmayan Mutasyon:

var originalRecord = new Person(1, "Doe");
var modifiedRecord = originalRecord with { Name = "Iron Developer" };

Bu özellik, değiştirilemez veri yapılarıyla çalışırken, orijinal veriyi değiştirmeden bir örneği "değiştirme" olanağı sunduğundan kullanışlıdır.

IronPDF Kütüphanesi Tanıtımı

IronPDF web sayfası

IronPDF, doğrudan .NET uygulamaları içinde PDF belgeleri oluşturma, düzenleme ve yönetme için kapsamlı bir çözüm sunan .NET geliştiricilerine yönelik bir PDF kütüphanesidir. Geliştiricilerin HTML'yi PDF'lere, CSS, JavaScript ve resimleri PDF'lere dönüştürmesine olanak tanıyarak PDF oluşturma sürecini basitleştirir. IronPDF, Windows, Linux ve macOS gibi çeşitli işletim sistemlerinde, web, masaüstü ve konsol uygulamaları dahil olmak üzere farklı .NET çerçeveleri ve proje türlerini destekler.

PDF oluşturmanın ötesinde, IronPDF PDF'leri düzenleme, özellikler ve güvenliği ayarlama, PDF formlarıyla çalışma ve içerik çıkarma yetenekleri sunar. .NET projelerine PDF işlevselliğini entegre etmek için güvenilir bir araç arayan geliştiricilerin ihtiyaçlarını karşılamak üzere tasarlanmıştır.

Kod Örneği

C# kullanarak IronPDF ile PDF oluşturma, hem sınıf hem de kayıtlarla gerçekleştirilebilir. Basit bir PDF belge oluşturmanın her iki yaklaşımla nasıl yapılacağını gösteren örnekler aşağıda: C#'da sınıflar ve kayıtlar arasındaki temel fark, kullanım amaçlarında yatar: sınıflar varsayılan olarak değiştirilebilirdir ve geleneksel nesne yönelimli programlama için tasarlanmışken, kayıtlar değişmezdir ve veri temelli programlama için tasarlanmıştır, bu da onları veri modelleme için ideal hale getirir.

Bir Sınıf Kullanma

Bu örnekte, verilen bir HTML dizesinden PDF oluşturmak için bir yönteme sahip bir PdfGenerator sınıfı tanımlayacağız.

using IronPdf;
using System;

public class PdfGenerator
{
    public string HtmlContent { get; set; }

    public PdfGenerator(string htmlContent)
    {
        HtmlContent = htmlContent;
    }

    public void GeneratePdf(string filePath)
    {
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf(HtmlContent);
        pdfDocument.SaveAs(filePath);
    }
}

class Program
{
    public static void Main(string[] args)
    {
        License.LicenseKey = "License-Key"; // Set your license key here

        var generator = new PdfGenerator("<h1>Hello, World from Class!</h1>");
        generator.GeneratePdf("ClassExample.pdf");
    }
}

Çıktı:

Sınıf örneğinden çıktılanmış PDF

Bir Kayıt Kullanma

Ek olarak, bir C# kaydı başlatıldıktan sonra değiştirilemez. Benzer bir sonucu bir kayıt ile, değişiklikler için with ifadeleri kullanarak nasıl elde edebileceğinizi burada görebilirsiniz. Bu, esasen istenen değişikliklere sahip yeni bir kayıt örneği döndürür.

using IronPdf;
using System;

public record PdfGeneratorRecord(string HtmlContent)
{
    public void GeneratePdf(string filePath)
    {
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf(this.HtmlContent);
        pdfDocument.SaveAs(filePath);
    }
}

class Program
{
    public static void Main(string[] args)
    {
        License.LicenseKey = "License-Key"; // Set your license key here

        var recordGenerator = new PdfGeneratorRecord("<h1>Hello, World from Record!</h1>");
        recordGenerator.GeneratePdf("RecordExample.pdf");
    }
}

Çıktı:

Kayıt örneğinden çıktılanmış PDF

Bu örnekler, C#'da IronPDF kullanarak hem sınıf hem de kayıtlarla nasıl PDF dosyası oluşturulacağını göstermektedir. "Sonrasında değiştirilecek olması gereken nesneler için sınıf daha uygun olabilir." Oluşturulduktan sonra değişmemesi gereken verilerle ilgileniyorsanız veya değişmezliğin sözdizimsel sadeliğini ve emniyetini beğeniyorsanız, bir kayıt daha iyi bir seçim olabilir.

Sonuç

IronPDF lisanslama sayfası

Sonuç olarak, sınıflar değiştirilebilir durum ve başvuru bazlı eşitlik ile geleneksel nesne yönelimli özellikler sunarken, kayıtlar değiştirilemez veri yapıları tanımlamak için modern bir yaklaşım sunar ve değer bazlı eşitlik sağlar.

Bir sınıf veya kayıt kullanma tercihi, uygulamanızın belirli gereksinimleri, değişmezliğe olan ihtiyaç, veri yapısının karmaşıklığı ve tercih edilen eşitlik karşılaştırma yöntemi gibi faktörler göz önünde bulundurularak yönlendirilmelidir. IronPDF'nin Ücretsiz Denemesini Keşfedin, .NET uygulamalarınıza PDF işlevselliği entegre etmek isteyenler için, lisanslar $999 ile başlamaktadır.

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