CodeBlanks Logo Icon CodeBlanks

this anahtar kelimesi

C# kursu · Orta seviye · Ders 4/116

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

  1. 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.

  2. this ile atamayı tamamla

    public void SetName(string name) { this.name = ____; }
    Cevabı göster
    public void SetName(string name) { this.name = name; }
  3. 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)

Orta seviye bölümündeki tüm dersler