Veri tiplerinin neler olduğunu öğrenmeden önce değişken kavramına değinmemiz gerekir. Değişkenler, içerisinde farklı türde verilerin saklanabileceği yapılardır. Değişkenler kullanılmaya başlamadan önce tanımlanır ve tanımlandıktan sonra derleyici, değişkenin tipine göre bellekten yer ayırır. C#’ta değişkenler içinde tutabileceğimiz veri türleri ikiye ayrılır:
- Değer Tipleri (value type)
- Referans Tipleri (reference type)

C sharp’ta değişken tanımları farklı yollarla yapılır. Hangi türden veriye ihtiyacımızın olduğu belirlendikten sonra, değişken tanımlama işlemlerine geçebilir. Örneğin sayısal bir değer tutacak veriye ihtiyaç duyduğumuzda: int deger = 10; gibi bir işlem yaparız. Değişken tanımlanırken önce değişken tipi sonra ismi yazılır. (int sayi, bool sonuc, decimal tutar vs.) Bu derleyiciye, int’in kapasitesi olan 4 byte’lık bir yer tahsis edilmesini söyler. int, C#’ta sayısal verileri tutmak için kullanılan değer tiplerinden biridir. Bunu tanımladıktan sonra şunu anlamam gerekli, ben bu “deger” değişkeninin içerisine, programım boyunca bir takım değerler atıp kullanacağım. Diğer değişken tanımları yandaki örnekte görüldüğü gibi yapılabilir:
Burada da farklı tiplerde birçok değişken kullanılmıştır. Hangi değişkenin kullanılması gerektiği, o değişkende nasıl bir veri saklamak istememize bağlıdır. Yani sayısal ve tam sayı türünden verilerimiz varsa int, long, short gibi tipler, kesirli sayılarla uğraşacaksak, float, double, decimal, doğrudur-yanlıştır değeri tutacaksak bool vs. gibi değişken tipleri kullanmamız gerekir. Metinsel veriler tutacaksak string tipini kullanmamız gerekir.
Değer Tipleri (Value Types):
Direk değerin kendisinin atandığı tiplerdir. System.ValueType sınıfından türetilirler ve içerilerinde verinin kendisi vardır.
Referans Tipleri (Reference Types):
Referans tipleri verinin kendisini tutmaz onun yerine verinin bulunduğu bellek adreslerini saklarlar. Yani ayrılan belleğin konumunu gösteren bilgiyi tutarlar (0x804e000 gibi). Aynı veriyi referans tutan birkaç değişkenden biri değiştiğinde, diğerleri de adres bilgisi tuttuğu için bu değişiklikten etkilenecektir (istisnai durumlar vardır).
Bunların bellekte nasıl çalıştıklarına örnek verecek olursak:
Değer tipli” değişken atamalarında derleyici nasıl çalışır:


İlk aşamada a ve b tanımlanıp eşitleme yapılır, İkinci aşamada ise b ve a’nın içeriği değişiyor. b değişkeni ilk tanımlandığında a’nın değerini aldı ama sadece içinde tutulan değeri alır. a’nın yada b’nin değişmesi birbirlerini hiçbir şekilde etkilemeyecektir.
Peki “referans tiplerinde” bu durum nasıldır:






Ör: Örnekten de görüldüğü gibi, referans tipli değişkenlerde birbirlerine eşitleme durumu varsa, eşitlenen nesnelerden birinin içeriğinin değişmesi diğerlerini de etkileyeceklerdir tam olarak gösterdikleri yer aynı yerdir..

Görüldüğü gibi Değer Tipleri ve referans tiplerinin çalışma mantıkları farklıdır. Kodumuzu üretirken bu farkları göz önünde bulundurup ona göre işlem yapmamız faydalı olacaktır.
Sonraki yazıda, stack ve heap kavramı üzerinde duracağız. Ve object-string gibi referans tiplerinin çalışma prensibinden bahsedeceğiz.
Yazar: Salih TAZE