📘 9.3 – this Anahtar Kelimesiyle Yönlendirme
🔹 Açıklama:
C# dilinde this anahtar kelimesi, şu anki sınıfın içindeki nesneyi temsil eder.
Genellikle aşağıdaki amaçlarla kullanılır:
- Constructor overload sırasında bir diğer constructor’ı çağırmak
- Sınıf içindeki değişken ile parametre adı çakıştığında ayırt etmek
- Formdan gelen değerleri sınıfın iç özelliklerine atarken netlik sağlamak
- Fluent API benzeri zincirli kullanım (this return eden metodlar) yazmak
🔍 Genel Kullanım:
public class Ogrenci
{
private string ad;
public Ogrenci(string ad)
{
this.ad = ad; // parametre ile sınıf değişkeni çakışınca ayırır
}
}
📍 Kullanım Alanları:
- Parametreli yapıcı metotlarda belirsizliği ortadan kaldırmak
- Nesne içinde kendi kendine atıf yapmak
- Nesne zincirleme işlemlerini yapılandırmak
- this(…) ile constructor çağrısı yapmak
🎯 Kazanımlar:
- this anahtar kelimesinin yapısını ve işlevini öğrenme
- Kodu okunabilir, düzenli ve hata riski az hâle getirme
- Overload edilen constructor’ları this(…) ile yönlendirme
- Parametre-sınıf üyesi çakışmalarında doğru kullanımı yerleştirme
⸻
🧪 9.3 – this Anahtar Kelimesiyle Yönlendirme: Uygulamalı 5 Örnek
⸻
📌 Örnek 1: Sınıf Özelliği ile Parametre Adı Çakıştığında Ayırma
🎯 Amaç: Parametre ile sınıf değişkeni aynı isimde olduğunda this kullanımı.
public class Ogrenci
{
private string ad;
public Ogrenci(string ad)
{
this.ad = ad; // burada ‘this.ad’ sınıfa ait olan, ‘ad’ parametre
}
public void Yazdir()
{
MessageBox.Show($”Ad: {ad}”);
}
}
📝 Açıklama:
Kod okunabilirliğini ve veri doğru yönlendirmesini sağlar.
⸻
📌 Örnek 2: this ile Constructor’dan Constructor Çağırmak
🎯 Amaç: Parametre sayısı az olan constructor’ı genişletilmiş olanla birleştirmek.
public class Ogrenci
{
public string Ad;
public string Soyad;
public Ogrenci(string ad) : this(ad, “Bilinmiyor”) { }
public Ogrenci(string ad, string soyad)
{
this.Ad = ad;
this.Soyad = soyad;
}
}
📝 Açıklama:
Kod tekrarını azaltır, tüm yapılar tek bir ana constructor’da kontrol edilir.
⸻
📌 Örnek 3: Form’dan Gelen Değerleri this ile Yönlendirme
🎯 Amaç: Parametrelerle gelen verilerin sınıf özelliklerine atanmasında belirsizliği önleme.
public class Urun
{
public string Ad;
public double Fiyat;
public void Ekle(string Ad, double Fiyat)
{
this.Ad = Ad;
this.Fiyat = Fiyat;
}
}
📝 Açıklama:
Sınıf içinde aynı isimli alan ve parametrelerin ayrımı sağlanır.
⸻
📌 Örnek 4: this ile Nesne Referansı Döndürerek Zincirleme Kullanım
🎯 Amaç: Metot zincirlemeyi mümkün kılmak.
public class Hesap
{
private double bakiye = 0;
public Hesap ParaYatir(double miktar)
{
bakiye += miktar;
return this;
}
public Hesap ParaCek(double miktar)
{
bakiye -= miktar;
return this;
}
public void BakiyeGoster()
{
MessageBox.Show($”Bakiye: {bakiye} TL”);
}
}
// Kullanım:
Hesap hesap = new Hesap();
hesap.ParaYatir(100).ParaCek(40).BakiyeGoster();
📝 Açıklama:
Fluent Interface mantığı bu tür “this-return” yapılarla mümkündür.
⸻
📌 Örnek 5: this ile Form Elemanlarına Erişim
🎯 Amaç: Form içindeki elemanlara this ile erişimi netleştirmek.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Text = “Öğrenci Kayıt”; // ‘this’ burada formu temsil eder
}
private void this_Load(object sender, EventArgs e)
{
this.BackColor = Color.LightBlue;
}
}
📝 Açıklama:
Form sınıfı içindeki öğelere “bu form” anlamında this ile erişilir.
⸻
✅ Özet:
Bu örneklerle öğrenciler:
• this anahtar kelimesinin çok yönlü kullanımını öğrendi
• Yapıcı metodlar arasında yönlendirme yapmayı kavradı
• Fluent interface tekniğine ilk adımı attı
• Kod organizasyonu ve okunabilirliğini geliştirdi
Pingback : A'DAN Z'YE NTP - İÇİNDEKİLER - Hasan TANDOĞAN