C#

C# Referans Değişkenlerinde Atama

Sınıf ve nesne yapımızı anlattık. Şimdi oluşturduğumuz nesneleri taşıyan daha doğrusu temsil eden referans değişkenlerinden bahsedelim. Referans değişkenleri nesnelerimizin kendisini değil bulunduğu noktayı taşır demiştik. Bu yüzden de normal değişkenler(değer tipi) gibi işlem göremezler. Referans değişkenleri atamada, değer tipi değişkenleri gibi davranmaz. Değer tipi değişkenler de, atama yapılırken sağdaki değişkenin değeri soldakine kopyalanır. Ancak referans değişkenlerinde soldaki değişken sağdaki değişkenin işaret ettiği nesneyi işaret etmesine neden olur. Yani referansı kopyalamış oluruz. Bu durum ilk bakışta fark yokmuş gibi gözükse de aslında önemli bir farktır. Bir örnekle açıklayalım;

Tasit otomobil = new Tasit();

Tasit motor = otomobil;

otomobil referans değişkeni oluşturup, motor referans değişkenine atadık. Bu durumda otomobil değişkeninin işaret ettiği nesneyi artık motor değişkeni de işaret ediyor. Bu durum, şu anlama geliyor; artık iki değişkende aynı nesneyi etkiliyor. Yani iki değişkende aynı nesne üzerinden işlem yapabilirler. Bu iki değişken aynı nesneyi işaret etse de değişkenlerden birine yeni bir değişken ataması yapıldığında, sadece atama yapılan değişken etkilenir. Ve artık yeni nesneyi işaret etmeye başlar. Mesela;

Tasit otomobil = new Tasit();

Tasit motor = otomobil;

Tasit tir = new Tasit();

motor = tir;

motor, tir değişkeninin işaret ettiği nesne ile ilişkilendirilmiştir. Bu durumdan otomobil değişkeni etkilenmez. Şimdi tüm bu işlemleri tek bir örnekte görelim.

namespace OOP
{
	public class Tasit
	{

		public String yakit;// Taşıtın yakıt tipi
		public int hiz; // Taşıtın Maximum hızı 
		public String renk; // Taşıtın rengi
		public String marka; // Taşıtın markası

		// Taşıtın bilgilerini ekrana yazdıran metot
		public void tasitInfo() {
			String tasit = "Taşıtın markası: " + marka + " rengi: " + renk + " yakıt tipi: " + yakit + " maximum hızı: " + hiz;

			System.Console.WriteLine (tasit);
		}
	}

	class MainClass
	{
		public static void Main (string[] args)
		{
			// Taşıt tipinden otomobil nesnesini oluşturuyoruz
			Tasit otomobil = new Tasit ();
			// motor değişkeninin nesnesini otomobil ile ilişkilendirdik
			Tasit motor = otomobil;

			// otomobil'in hız değişkenine değer atıyoruz
			otomobil.marka = "BMW";

			// Ekrana yazdıralım
			Console.WriteLine("Araç Markası " + otomobil.marka);
			Console.WriteLine();

			// tir için nesnemizi oluşturduk ve ona da değer ataması yaptık
			Tasit tir = new Tasit();
			tir.marka = "Volvo";

			// Yeni değişkeni diğer değişkene atıyoruz
			motor = tir;

			// Çıktılarda otomobil değişkeninin bu atamadan etkilenmediğini görüyoruz
			Console.WriteLine("Otomobil Markası " + otomobil.marka);
			Console.WriteLine("Tır Markası " + tir.marka);
			Console.WriteLine("Motor Markası " + motor.marka);

		}
	}
}

Yorum Yap