C# Class ve Record Türlerin Farklılıkları

C# Class ve Record Türlerin Farklılıkları

C# dilinde "record" ve "class" ifadeleri, veri türleri tanımlamak için kullanılan yapılardır. Her ikisi de nesneye dayalı programlama paradigmasına uygun olarak kullanılabilir, ancak farklı özelliklere sahiptirler. "record" ve "class" arasındaki temel farklar:

  • İmmutability (Değişmezlik):
    • "record" yapısı, zorunlu olmamakla birlikte varsayılan olarak değişmez (immutable) nesneleri temsil eder. Yani, bir kez oluşturulduktan sonra içeriği değiştirilemez olmayı gerektirir.
    • "class" yapısı ise varsayılan olarak değiştirilebilir (mutable) nesneleri temsil eder. Yani, içeriği değiştirilebilir ve güncellenebilir.
    • Bu nedenle, "record" yapıları genellikle veri taşıma ve değer nesnelerini temsil etmek için kullanılırken, "class" yapıları daha çok durum nesneleri ve iş mantığı temsil etmek için kullanılır.
  • Equality (Eşitlik):
    • "record" yapıları, içerik tabanlı eşitlik için otomatik olarak değerlerin karşılaştırılmasını sağlar. Yani, iki "record" nesnesi, içerikleri aynı olduğunda eşittir.
    • "class" yapılarında ise varsayılan olarak referans tabanlı eşitlik uygulanır. Yani, iki "class" nesnesi, aynı bellek konumunu işaretmediği sürece eşit değildir.
    • "record" yapılarındaki davranış, "Equals()" ve "GetHashCode()" metodlarının otomatik olarak oluşturulmasını sağlar.
  • Pattern Matching:
    • "record" yapıları, pattern matching özelliklerine doğrudan destek sağlar. Bu, "record" nesnelerinin desenlere (pattern) göre eşleştirilmesini kolaylaştırır.
    • "class" yapılarında ise pattern matching doğrudan desteklenmez. Ancak, yine de bir "class" türünde pattern matching yapılabilir, ancak daha fazla kod yazma gerekebilir.
  • Deconstruction (Ayrıştırma):
    • "record" yapıları, deconstruction özelliğini doğrudan destekler. Bu, bir "record" nesnesini özelleştirilmiş desenlere (pattern) göre ayrıştırmanın (deconstructing) kolay olmasını sağlar.
    • "class" yapılarında deconstruction özelliği yoktur. Ancak, bir "class" türündeki nesne üzerinde deconstruction yapılabilir, ancak daha fazla kod yazma gerekebilir.
  • Değişkenlerin Tanımlanması:
    • "record" yapıları, tanımlandıkları yerdeki değişkenlere otomatik olarak erişim imkanı sağlar.
    • "class" yapılarında ise değişkenlerin erişim düzeyleri belirlenmelidir.

Özetlemek gerekirse, "record" yapıları daha çok veri taşıma ve değer nesnelerini temsil etmek için kullanılırken, "class" yapıları daha çok durum nesneleri ve iş mantığını temsil etmek için kullanılır. "record" yapıları, değişmezlik ve otomatik eşitlik gibi özelliklere sahipken, "class" yapıları daha fazla özelleştirme imkanı sunar. Seçim, projenin gereksinimlerine ve tasarım tercihlerine bağlıdır.

Örnek Record Kullanımı;

public record Person
{
    public string Name { get; init; }
    public int Age { get; init; }
}

Örnek Class Kullanımı;

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

Randevu

Hakkımda


Şaban Çetin

...

İletişim Formu


Sosyal Medya


...

...

...

© Copyright: www.griadam.com.tr