Değer ve Referans Tipleri

C Sharp'ta veri tipleri ikiye ayrılır.

  • Değer Tipleri : Değer tipleri bildiğimiz temel tipleri içerir. char, int, folat gibi. Ayrıca enum ve struct tipleri de birer veri tipidir.
  • Referans Tipleri : Referans tipleri class(sınıf), interface(arayüz), delegate ve array(dizi) tiplerini içerir.

Değer Tipleri ve Referans Tipleri Arasındaki Fark

Değer ve Referans Tiplerinde Atama İşlemi

Değer tipi ve referans tipleri arasındaki temel fark şudur; değer tipindeki bir değişken direk kendisi sahip olduğu bilgiyi, veriyi içerir. Referans tipindeki bir değişken ise gösterdiği bilgiye, veriye ilişkin bir referans tutar. İki referans tipindeki değişkenin aynı objeyi referans etmesi mümkün olduğundan biri üzerindeki işlemler diğerinin gösterdiği veriyi de etkileyecektir. Fakat iki aynı değer tipindeki değişken kendi verilerine sahiptirler ve her biri kendi kopyası üzerinde değişiklik yapabilir.

Örnek Uygulama

C Sharp'ta veri tipleriyle ilgili örnek uygulamayı buradan indirebilirsiniz.

Değer ve Referans Tipleri - Örnek Uygulama - Ekran 1

Buradaki anlatımları okumadan önce örnek uygulamayı indirmeniz, çalıştırmanız ve incelemeniz daha faydalı olacaktır.

İlk butona tıkladığınızda bu butonun yapmış olduğu işlevleri göreceksiniz. Burada iki ayrı değer tipinin birbirine atandığını, daha sonra y değişkenine farklı bir değer verildiğini ve bu değişkenlerin sonuçlarının MessageBox sınıfı ile ekranda gösterildiğini görmekteyiz.

int x;
x = Convert.ToInt32(txtDeger.Text);

int y;
y = x;
y = 999;

MessageBox.Show("x'in değeri : " + x.ToString()
 + ", y'nin değeri : "+ y.ToString(), "Değer Tipleri");
Değer ve Referans Tipleri - Örnek Uygulama - Ekran 2

Sonuç olarak x ve y değer tipinde değişkenlerdir ve y değişkenine 999 atandığında x değişkeninin 0 olan değeri değişmez.

İkinci butonun arkasında çalışan koda baktığımızda ise kendi oluşturduğumuz Test tipindeki bir sınıfın kullanıldığını görmekteyiz. Test sınıfında tanımlanan iki değişkenin birbirine atandığını ve test2 isimli değişkenin üye değişkeni olan x değerinin değiştirildiğini görmekteyiz. Gerçekte ise test2 değişkenine test1 değişkeni atanmasıyla aslında bellekte tek bir objenin yani aynı objenin ikinci bir referansını tanımlamış oluyoruz.

Test test1 = new Test();
test1.x = Convert.ToInt32(txtReferans.Text);

Test test2;
test2 = test1;
test2.x = 999;

MessageBox.Show("test1 objesinin değeri : " 
+ test1.x.ToString() + ", 
test2 objesinin değeri : " 
+ test2.x.ToString(), "Referans Tipleri");

Sonuç olarak test2 değişkeninin x elemanı değiştiğinde aslında test1 değişkenin x elemanını değiştiriyoruz. Her ikisinin de değerinin 999 olduğunu görmekteyiz.

#347 Orhan TURK dedi ki;

Nisan 26, 2008, Cumartesi 2:50

Tşk Açıklamalı Bir Örnek Olmuş

Yorum yapabilirsiniz

Adınız  


E-Posta  


Yorumunuz