Serdar YILMAZ
Bizimkisi Bir “Bug” Hikayesi...
Serdivan/Sakarya

Etiket 'C# This Kullanımı'

C# – This Anahtar Sözcüğü

dotnet

this anahtar sözcüğü ilgili nesnenin referansını belirtmektedir. Konuyu daha anlaşılır kılmak için örnek uygulamalar üzerinden gideceğiz.

Yukarıdaki veri modelinde sınıfın üye elemanları ile yapıcı metodun parametrelerinin aynı isimlere sahip olduğu görülmektedir. Peki yapıcı metot içerisinde AdSoyad değişkenine erişmek istediğimizde; sınıfın üye elemanı olan AdSoyad değişkenine mi erişiriz yoksa yapıcı metodun parametresi olan AdSoyad değişkenine mi ? İşte bu noktada this anahtar sözcüğü sorunun cevabını netleştirip, kaynak kodlarımızın okunabilirliğini arttırmaktadır.

this anahtar sözcüğü ile nitelenen değişkenler sınıfın üye elemanlarıdır. Yukarıdaki veri modelinde yapıcı metoda parametre olarak gönderilen değerler, sınıfın üye elemanlarına aktarılacaktır.

Yukarıdaki programımızı inceleyecek olursak; Silindir sınıfının iki adet yapıcı metodu bulunmaktadır. Silindir sınıfından nesne oluşturulurken 3 adet parametre girildiğinde; 1. parametre silindirin yarıçapını, 2. parametre yüksekliğini, 3. parametrede PI sayısının kaç alınacağını belirtecektir.

Eğer Silindir sınıfından nesne oluşturulurken 2 parametre girilirse; 1. parametre silindirin yarıçapını, 2. parametre yüksekliğini belirtecektir ve PI sayısı da “3.1415” olarak alınacaktır. Peki bunu nasıl yaptık ?

İçeriğimizin başında this anahtar sözcüğünün ilgili nesnenin referansını belirttiğini söylemiştik.

public Silindir(double yaricap, double yukseklik) : this(yaricap, yukseklik, 3.1415) { }

this anahtar sözcüğü ile; girilen 2 parametreyle beraber, PI girilmediği taktirde varsayılan olarak kabul edilmesini istediğimiz değerini, double tipinde 3 parametre alan yapıcı metoda gönderdik. Böylece 2 parametre alan yapıcı metodu, 3 parametre alan yapıcı metottan faydalanarak kullandık.

Yapıcı metotların aşırı yüklenmesini anlatırken yukarıdaki programı this anahtar sözcüğünü kullanmadan yazmıştık (Bkz:C# – Yapıcı Metotlar). Kaynak kodlarını karşılaştırıp aradaki farkı daha iyi anlayabilirsiniz.

Yukarıdaki program Opsiyonel(Optional) Parametreler kullanılarak tek bir yapıcı metot ile yazılabilir.

Serdar YILMAZ