Value Types (Değer Türleri)
C # veri depolamak için iki yolu vardır: referans ve değer türleri.
Dahili veri türleri (int ve double gibi), değer türleri olan değişkenleri bildirmek için kullanılır. Değerleri, stack (yığın) adı verilen bir yerde bellekte saklanır.
Örneğin, bildirim ve atama deyimi int x = 10; olarak düşünülebilir:
X değişkeninin değeri stack da depolanır.
Reference Types (Referans Türleri)
Referans türleri, nesneleri saklamak için kullanılır. Örneğin, bir sınıftan bir nesne oluşturduğunuzda, referans türü olarak saklanır.
Başvuru türleri heap adı verilen belleğin bir bölümünde saklanır.
Bir nesneyi başlattığınızda, o nesne için olan veriler heap üzerinde saklanırken, heap bellek adresleri stack da depolanır.
Bu yüzden buna bir referans türü denir – heap üzerindeki asıl nesneye bir başvuru (bellek adresi) içerir.
Gördüğünüz gibi, stack person objectten oluşturulan u1 nesnesine ait gerçek nesnenin depolandığı heap bellek adresini depolar.
Stack, x gibi tüm değer türlerini içeren statik bellek ayırma işlemi için kullanılır.
Heap, programınızın çalışma süresi boyunca ek bellek gerektirebilecek özel nesneler içeren dinamik bellek ayırma işlemi için kullanılır.