Mənim bloqum

This açar sözü

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.


Accessing Fields and Parameters

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;
    }
}
                                                     
                                                                             
                                                                            
image

Access to Methods

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();
    }
}

                                                     
                                                                             
                                                                            

Access to Property

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; }
    }
}
                                                     
                                                                             
                                                                            

Constructor Çağrılması

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
    }
}
                                                     
                                                                             
                                                                            

Xüsusi qeyd

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.

image