'this' Anahtar Kelimesi
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 4 / 70.
this anahtar kelimesi, bir sınıfın mevcut örneğine atıfta bulunur. Örnek üyelerine erişmek ve aynı isme sahip parametreler ile alanlar (fields) arasında ayrım yapmak için kullanılır.
Alanlar ve parametreler arasında ayrım yapmak için this kullanın
public class Person
{
private string name;
private int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
}this olmadan, parametre alanı gölgelerdi
// Bu beklendiği gibi çalışmayacaktır
public Person(string name, int age)
{
name = name; // Parametreyi kendisine atar!
age = age; // Parametreyi kendisine atar!
}this anahtar kelimesini özelliklerle kullanın
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
this.Name = name;
this.Price = price;
}
public void DisplayInfo()
{
Console.WriteLine($"{this.Name}: ${this.Price}");
}
}Aynı sınıftaki başka bir yapıcıyı (constructor) çağırmak için this anahtar kelimesini kullanın
public class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public Rectangle(int width, int height)
{
this.Width = width;
this.Height = height;
}
// Constructor for squares
public Rectangle(int size) : this(size, size)
{
}
}Örnek kullanım:
Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5); // 5x5 oluştururthis anahtar kelimesi her zaman geçerli nesne örneğine başvurur. Parametre adları alan veya özellik adlarıyla eşleştiğinde özellikle yararlıdır, kodunuzu daha net hale getirir ve hataları önler.
Görev
OrtaParametre değerlerini özelliklere atamak için this anahtar kelimesini kullanan bir yapıcı (constructor) ekleyerek Product sınıfını tamamlayın. Ayrıca, özelliklere erişmek için this kullanarak GetDescription() metodunu uygulayın.
GetDescription() metodu şu değeri döndürmelidir: "{Name} costs ${Price}"
Kopya kağıdı
this anahtar kelimesi, bir sınıfın geçerli örneğine başvurur ve örnek üyelerine erişmek için kullanılır.
Aynı isme sahip alanlar (fields) ve parametreler arasında ayrım yapmak için this kullanın:
public class Person
{
private string name;
private int age;
public Person(string name, int age)
{
this.name = name;
this.age = age;
}
}this olmadan, parametre alanı gölgeler ve kendisine atama yapar:
// Bu beklendiği gibi çalışmayacaktır
public Person(string name, int age)
{
name = name; // Parametreyi kendisine atar!
age = age; // Parametreyi kendisine atar!
}Özelliklerle (properties) birlikte this kullanın:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public Product(string name, decimal price)
{
this.Name = name;
this.Price = price;
}
public void DisplayInfo()
{
Console.WriteLine($"{this.Name}: ${this.Price}");
}
}Aynı sınıftaki başka bir yapıcıyı (constructor) çağırmak için this kullanın (yapıcı zincirleme - constructor chaining):
public class Rectangle
{
public int Width { get; set; }
public int Height { get; set; }
public Rectangle(int width, int height)
{
this.Width = width;
this.Height = height;
}
// Kareler için yapıcı
public Rectangle(int size) : this(size, size)
{
}
}
Rectangle square = new Rectangle(5); // 5x5 oluştururKendin dene
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
Product product = new Product(name, price);
Console.WriteLine($"Product: {product.Name}");
Console.WriteLine($"Price: ${product.Price}");
Console.WriteLine(product.GetDescription());
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci Kayıtları