this anahtar kelimesi
this ile sınıfın kendisine referans vermeyi öğrenirsin.
this nedir?
this anahtar kelimesi, geçerli örneğe (current instance) başvurur. En sık kullanım amacı, parametre ile alan aynı ismi taşıdığında ikisini ayırmaktır: this.name = name;.
Burada this.name sınıfın alanını, name ise metot parametresini gösterir. this olmadan name = name parametreyi kendisine atar; alan değişmez. Bu yüzden gölgeleme (shadowing) durumunda this vazgeçilmezdir.
this ile nitelik neden gerekli
Parametre adı alan adıyla aynı olduğunda derleyici parametreyi öncelikli sayar. name = name; ifadesinde her iki taraf da parametre olur; alan hiç değişmez. Bu sessiz bir hatadır ve kod yine de derlenir.
this öneki ile derleyiciye 'sol taraf sınıfın alanı' diyorsun. Böylece atama doğru çalışır. Parametre ve alan aynı isimse her zaman this kullan. Farklı isimler seçerek de bu durumu tamamen önleyebilirsin.
Uygulama Student sınıfında this kullan
Student sınıfına private string name; alanı zaten verilmiş. public void SetName(string name) metodu ekle ve gövdede this.name = name; yaz. Ayrıca public string GetName() metodu ekle ve return name; yaz. Main içinde SetName("Ayşe") çağırıp GetName() ile yazdır.
Örnek çözümü göster
SetName gövdesinde this.name = name; yaz. GetName gövdesinde return name; yaz. Main içine s.SetName("Ayşe"); Console.WriteLine(s.GetName()); ekle.
Örnek çözüm:
using System;
class Student
{
private string name;
public void SetName(string name)
{
this.name = name;
}
public string GetName()
{
return name;
}
}
class Program
{
static void Main()
{
Student s = new Student();
s.SetName("Ayşe");
Console.WriteLine(s.GetName());
}
}
Kendini test et
-
this.name = name; ne yapar?
public void SetName(string name) { this.name = name; }- Sınıfın name alanına parametre olan name'i atar
- Yeni bir yerel değişken tanımlar
- Parametreyi yok sayar
- Sınıfı yeniden başlatır
Cevabı göster
Sınıfın name alanına parametre olan name'i atar — Doğru. this.name alanı, name parametreyi gösterir.
-
this ile atamayı tamamla
public void SetName(string name) { this.name = ____; }Cevabı göster
public void SetName(string name) { this.name = name; } -
this kullanımını amacına eşle
- this.name = name
- Alanı parametreden ayır
- this
- Geçerli örnek
- this.Greet()
- Kendi metodunu çağır
- name = name
- Kendine atama (no-op)