.NET Core (C#) Temel Seviye Dil & Temel

C# Records, Struct vs Class (Value vs Reference Types)

Değer kopyalamak mı, adres işaret etmek mi? Değişmez (Immutable) DTO mimarisinin temeli.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Value Type (Struct): Kağıdın fotokopisini çekip arkadaşına vermektir (arkadaşı üstünü çizerse seninki etkilenmez). Reference Type (Class): Arkadaşına Google Docs linki paylaşmaktır (ikiniz de aynı dokümanı değiştirirsiniz).

Teknik & Mimari Tanım

Class ve Record Class Heap bellekte tutulur, referans eşitliği (reference equality) bakar. Struct Stack bellekte tutulur, değer eşitliği bakar. C# 9+ Record ise değer tabanlı eşitlik (value-based equality) sunan, init-only ve with ifadesiyle kopyalanabilen immutable sınıflardır.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“Class referans tipidir, heap'te yaşar. Struct değer tipidir, stack'te yaşar ve boxing/unboxing maliyeti yaratabilir. Record ise veri taşıma odaklı (DTO) olup içerik eşitliği (value-based equality) ve değişmezlik (immutability) sunar.”

.NET Core (C#) Örnek Uygulaması
public record UserDto(int Id, string Name, string Email);

var u1 = new UserDto(1, "Ali", "ali@mail.com");
var u2 = new UserDto(1, "Ali", "ali@mail.com");
Console.WriteLine(u1 == u2); // TRUE! (İçerik eşitliği)
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Büyük boyutlu verileri Struct yaparak metotlar arasında sürekli derin kopyalama maliyeti yaratmak.