C# Eğitimlerimize değer ve referans tipi kavramları ile devam ediyoruz.

11 ders boyunca C# da ki veri tiplerini anlatmaya çalıştım. Şimdi o tiplerin farklı bir özelliğinden bahsedeceğim.

Biliyorsunuz C# üzerinde oluşturduğunuz değişkenler, nesneler ram üzerinde tutulurlar ve orada işlem görürler. Değişkenler Ramde 3 bölümde tutulurlar.

Biz bugün sadece 2 alandan bahsedeceğiz. Stack ve Heap alanları.

Stack Ve Heap

Stack alan değer tipli değişkenleri ve değerlerini tutan alandır.

Heap alan ise oluşturulmuş nesne tipli değişkenlerin tutulduğu alandır.

 

Bu şekilde görebiliriz.

 

C# da veri tipleride iki türdür. Değer tipli olanlar yada referans tipli olanlar.

Bu iki tipinde veri tiplerini görüp daha sonra detaylı inceleyelim.

 

Değişken türleri:  “int”, “long”, “float”, “double”, “decimal”, “char”, “bool”, “byte”, “short”, “struct”, “enum”
Referans türleri:  “string”, “object”, “class”, “interface”, “array”, “delegate”, “pointer”

 

Değer Tipli Değişkenler

Değer tipli değişkenler Ramde Stack alanda bulunup direk değişkenin değerini tutan değişkenlerdir. Bu anlamda erişimleri hızlı ve kolaydır.

Örneğin C# da

[php]

int Sayi=5;

[/php]

tanımlamasını yapmış olalım. Değer tipli olan int türü verinin değerini ramde Stack alanında değeriyle beraber tutacaktır.

Referans Tipli Değişkenler

Referans tipli değişkenler nesnelerdir. Boyutu kullanım anında değişebileceği için Ram de Heap alanında saklanırlar ve Stack alanda ise sadece o değerin Heapdeki adresi tutulur. O değer istendiğinde Stackdeki adres yardımı ile Heap’e ulaşılır ve veri gerekli çözümleme işlemleri sonucunda kullanılabilir duruma gelir.

Yukarıda gördüğümüz gibi.

DipNot:

Bir dipnotu vermekte fayda var bu noktada.  string türü referans tipli olsa da özel bir durumu vardır ve metodlara işlem olarak geçerken değer tipli gibi davranır.

 

Bu anlattıklarımızın hepsini bir örnek ile pekiştirecek olursak.

Böyle bir kodlama sonucunda a değeri 3 b değeri 4 olarak sonuç verecektir. Yani değer tipli değişkenlerin değişimleri öncesindeki kullanımdaki değişkenleri etkilemezler.

Şimdi yazacağım kodlarda X bir sınıf ve içersinde Değer1 gibi bir propertnin olduğunu varsayalım.

 

İşte böyle bir durumda referans tipli bir değişkenden değer alan A3 5 e eşit olacaktır. Çünkü ikisi değerde aynı referans tipli değişkenin değerini kullanmaktadır. Böyle bir durumda A2 değeri değişirse tüm değişkenlerin değerininde değişmesini sağlayacaktır.

Umarım faydalı olmuştur.

Bir sonraki yazımda görüşmek üzere.

 


muratbilginer