C# mülakatlarının en popüler sorusu olan “Value Type ile Reference Type arasındaki fark nedir?” konusunu, bellekteki kopyalama mekanizmalarıyla birlikte kristal netliğinde öğreniyoruz.
- Değer tipi (struct, int, bool) atamalarında değerin kopyalanması.
- Referans tipi (class, string, array) atamalarında bellek adresinin kopyalanması.
- Referans paylaşımının yan etkileri ve güvenli kodlama.
- Null kavramı ve referans tiplerin varsayılan değerleri.
1. Değer Kopyalama vs Adres Paylaşımı
Bir değer tipini başka bir değişkene atadığınızda bellekte bağımsız ikinci bir kopya oluşur. Ancak bir referans tipini atadığınızda sadece Heap üzerindeki nesneyi gösteren adres (işaretçi) kopyalanır.
// DEĞER TİPİ ÖRNEĞİ
int sayi1 = 50;
int sayi2 = sayi1;
sayi2 = 100;
// sayi1 hala 50'dir, sayi2 değişti!
// REFERANS TİPİ ÖRNEĞİ (Dizi)
int[] dizi1 = new int[] { 1, 2, 3 };
int[] dizi2 = dizi1;
dizi2[0] = 999;
// dizi1[0] da 999 oldu! Çünkü aynı Heap adresini işaret ediyorlar.
💪 3. Gün Pratik Görevi (Challenge)
İki ayrı int dizisi oluşturun. Birini diğerine atayıp elemanını değiştirerek ekrana her iki dizinin ilk elemanını yazdırın ve çıktıyı gözlemleyin.
İpucu: Diziler referans tipidir, bu nedenle dizi2 üzerinden yapılan değişiklik dizi1’e de yansır.
Tüm Müfredat (Ders 3 / 100) →
Sıradaki: #4 Tip Dönüşümleri (Type Casting, Boxing & Unboxing) ⏳