C Sharpta this Anahtar Sözcüğü

this: Genelde çoğu kişi kullanımını bilir, ama neden kullandığı hakkında pek fikirleri yoktur.
Örneği inceleyelim;

using System;
class uygulama
{
    static void Main()
    {
        thisTest thisTst = new thisTest();
        thisTst.degerAta(80, 100);
        thisTst.ortalamaHesapla();
    }
}

class thisTest
{
    private int vize;   //this.vize
    private int final;  //this.final
    public void degerAta(int vize, int final)
    {
        this.vize = vize;
        this.final = final;
    }
    public void ortalamaHesapla()
    {
        Console.WriteLine("Not ortalaması= " + (vize * 0.6 + final * 0.4).ToString());
    }
}

Yukardaki örnekte görüldüğü gibi uygulama classından thisTest classındaki degerAta fonksiyonuna, vize ve final değerleri gönderilmiş. Farketmişsinizdir fonksiyonun aldığı parametreler ile class içindeki değişkenlerin isimleri aynı. Şunu düşünebilirsiniz: “Ben fonksiyona gelen parametrelere vize1 ve final1 isimlerini veririm, this kullanmaktan kurtulurum.”. Evet belki bu program için kurtulursunuz ama düşünsenize, onlarca classtan oluşan bir program yazdınız, yüzlerce değişkeniniz var ve o değişkenleri classlardan classlara gönderiyorsunuz. Her gönderdiğiniz classta da o değişken için yeni değişkenler üretiyorsunuz degisken1, degisken2, degisken3… gibi. Onlarca classtan ve yüzlerce değişkenden bahsettiğimiz bir programda sizce bu akıllıca bir yol olur muydu? O kadar değişkeni hafızasında tutabilecek, “haa bu değişkeni şu classta kullanmıştım” diyebilcek birinin yeryüzünde var olduğunu sanmıyorum. Zaten programlama açısından bakıldığında da hoş olmayan, gereksiz bir durumdur bu.

Programa tekrar dönmek gerekirse class içinde private olarak tanımlanmış vize ve final değişkenlerinin this.vize ve this.final ifadeleri ile temsil edildiğini zaten yorum satırı olarak yazdım. Demek ki this, bulunduğu sınıf temsil ediyor. this ile, bulunulan sınıfın ana dizinindeki tüm değişken ve metotlara ulaşılabilir. Yani fonksiyondaki vize değişkenine, this anahtar sözcüğü aracılığı ile ulaşamayız.

ortalamaHesapla fonksiyonunda ise, ortalama hesaplarken kullandığımız değişkenleri de this.vize ve this.final şeklinde kullanabilirdik. Çünkü onlar da class içindeki vize ve final değişkenlerini temsil ediyor. Ama ortalamaHesapla fonksiyonu, vize-final değişkeleriyle aynı isimde değişkenler almadığı için yani herhangi bir karmaşıklığa yol açmayacağı için this kullanmaya gerek duymadım.

Demek ki this, içinde bulunduğu sınıfın nesnelerine erişimi sağlıyormuş.

Not: http://www.serefakyuz.com/2011/06/csharpta-this-anahtar-sozcugu.html

One thought on “C Sharpta this Anahtar Sözcüğü

  1. this kullanımı; eğer sadece POCO/Entity tipi bir sınıf kullanıyorsanız (miras aldığı bir üst sınıf kullanıyorsanız) this kullanmanıza gerek yoktur. Property isimlerini büyük harfle değişkenleri küçük harfle başlatabilirsiniz. Eğer sınıfınız bir üst sınıfı miras alıyorsa this kullanmanız sizin hangi property nin o nesneye hangisinin üst sınıfa ait oldugunu karıştırmanızı engeller.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s