9 Mart 2010 Salı

Object Oriented Programming (3) - ValueType ve Reference Type Arasındaki Farklar

ValueType ve Reference Type Arasındaki Farklar





Şimdi örnek ile Value Type ve Referens Type'ı inceliyelim.

Örnekte, int türünde a ve b adlarında iki Value Type değişken tanımladık. Değişkenlere başlangıç değeri atadıktan sonra a değişkenin değerini b değişkenine atadık. Sonra her iki değişkeni de yazdırdık. Her iki değişken Stack de ayrı alanlarda depolandığı için birbirinden bağımsız kendi değerlerini depolayabildiler.

int a = 0;
int b = 0;
a = 10;
b = a;
b += 5;
MessageBox.Show("a=" + a.ToString());
MessageBox.Show("b=" + b.ToString());

Örnekte StringBuilder Class'ından sb1 ve sb2 adlarında iki Reference Type tanımladık. Daha sonra StringBuilder Class'ından türettiğim sb1 isimli nesnemin içerisine (Append Metodunu kullanarak) "Tamer " değerini ekledik ve sb1 isimli nesnemi sb2 nesnesine atadık. Atama işleminden sonra sb1 ve sb2 nesneleri Stack bölümünde aynı adresi kullandıkları için nesneler birbirlerine eşitlenirler.


StringBuilder sb1 = new StringBuilder();//RAM’de heap oluştur
StringBuilder sb2 = new StringBuilder();//RAM’de heap oluştur
sb1.Append("Tamer "); //sb1 e değer ata
sb2 = sb1; //sb1 değerini sb2 ye ata
MessageBox.Show("string 1=" + sb1.ToString());//sb1 oku
MessageBox.Show("string 2=" + sb2.ToString());//sb2 oku
sb1.Append("ŞAHİNER"); //sb1 değerine ekleme yap
MessageBox.Show("string 1=" + sb1.ToString());//sb1 oku
MessageBox.Show("string 2=" + sb2.ToString());//sb2 oku

Hiç yorum yok: