This açar sözü C# proqramlaşdırma dilində class daxilində metod, property və ya class scop-u daxilində həmin sinfin üzvünü təmsil edir. Bu söz sinif obyektini təmsil edərək, daxil olduğu class-a aid dəyişənlərə, metodlara və properity-lərə girişi(əlçatanlıq, access) təmin edir. Daha dəqiq desək, this keyword-ü class-ın o anki obyektini dolayaısı ilə onun bütün əlçatan üzvlərini təmsil edir. Bu söz tez-tez ad konfliktlərini həll etmək, sinif daxilində elementləri təyin etmək və metodlarda daha aydın kod yazmaq üçün istifadə olunur. Yəni class daxilindəki field-ləri eyni adlı metod parametrlərindən ayırır.
Yuxarıda da qeyd etdiyimiz kimi sinif daxilində field adı ilə eyni ada malik parametr və ya lokal dəyişən varsa, this keyword-ü, bu vəziyyəti fərqləndirmək üçün istifadə olunur.
public class MyClass
{
private int myField;
public void SetField(int myField)
{
// field ilə metod parametri eyni ada sahib olduqda
this.myField = myField;
}
}
This, class-ın başqa bir metodunu çağırmaq üçün istifadə oluna bilir.
public class MyClass
{
public void Method1()
{
Console.WriteLine("Method 1");
}
public void Method2()
{
// Bu class-dakı başqa metodu çağırma
this.Method1();
}
}
Sinifdə property adı ilə eyni ada malik parametr varsa, this sözündən istifadə etməklə bu oxşarlıqları fərqləndirmək olar.
public class MyClass
{
private int myProperty;
public int MyProperty
{
get { return this.myProperty; }
set { this.myProperty = value; }
}
}
Konstruktorları çağırmaq və aralarında keçid etmək üçün this keyword-ü istifadə olunur. Bu şekildə "constructor chaining" strukturu yaradılır. Aşağıdakı nümunədə class-ın Constructor overloading yanaşmasını tətbiq edərkən bu constructor-lara (this açar sözü içərisində olduğumuz class-ın obyektini təmsil etdiyi üçün) this açar sözü vasitəsi ilə dəyərlər göndərək bu overload-ları elə class daxilində aktivləşdirə bilirik. Bu mövzulara Constructor məqaləsində daha geniş yer vermişəm. Oradan oxumağınız tövsiyə edirəm.
public class MyClass
{
public MyClass()
{
// Parametrsiz constructor, diğər constructor-u çağırır
this.Initialize();
}
public MyClass(int value) : this()
{
// Parametr alan constructor
this.Initialize();
// Constructor əməliiyatlarının devamı...
}
public MyClass(int value, string name) : this(value)
{
// Compiler tərəfindən int tipində bir dəyər qəbul edən constructor tapılır və dəyər ona göndərilir
}
private void Initialize()
{
// Ortaq başlanğıc işləri
}
}
Bəzi başlıqlar dilimizə hərfi tərcümə olunduqda məğzi itdiyindən tərcümə etməmək məcburiyyətində qaldım. Qaranlıq məqamlar varsa mənə mail və ya sosial şəbəkərlərdən yaza bilərsiniz.