Megosztás:


Ez a kulcsszó

A this kulcsszó az osztály aktuális példányára hivatkozik. A bővítménymetódus első paraméterének módosítójaként is szolgál.

Megjegyzés

Ez a cikk az aktuális tag fogadópéldányára this való hivatkozás használatát ismerteti. A bővítménymetelyekben való használatával kapcsolatos további információkért tekintse meg a kulcsszót extension .

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

A következők gyakori felhasználási módjai this :

  • A jogosult tagok hasonló nevek által elrejtve, például:

    public class Employee
    {
        private string alias;
        private string name;
    
        public Employee(string name, string alias)
        {
            // Use this to qualify the members of the class
            // instead of the constructor parameters.
            this.name = name;
            this.alias = alias;
        }
    }
    
  • Objektum átadása paraméterként más metódusok számára.

    CalcTax(this);
    
  • Indexelők deklarálása, például:

    public int this[int param]
    {
        get => array[param];
        set => array[param] = value;
    }
    

A statikus tagfüggvények az osztály szintjén léteznek, és nem egy objektum részeként. this Nincs mutatójuk. A statikus metódusra való this hivatkozás hiba.

Az alábbi példában a paraméterek namealias és az azonos nevű mezők elrejtése. A this kulcsszó osztálytagként Employee minősíti ezeket a változókat. A this kulcsszó a metódus CalcTaxobjektumát is megadja, amely egy másik osztályhoz tartozik.

class Employee
{
    private string name;
    private string alias;

    // Constructor:
    public Employee(string name, string alias)
    {
        // Use this to qualify the fields, name and alias:
        this.name = name;
        this.alias = alias;
    }

    // Printing method:
    public void printEmployee()
    {
        Console.WriteLine($"""
        Name: {name}
        Alias: {alias}
        """);
        // Passing the object to the CalcTax method by using this:
        Console.WriteLine($"Taxes: {Tax.CalcTax(this):C}");
    }

    public decimal Salary { get; } = 3000.00m;
}

class Tax
{
    public static decimal CalcTax(Employee E)=> 0.08m * E.Salary;
}

class Program
{
    static void Main()
    {
        // Create objects:
        Employee E1 = new Employee("Mingda Pan", "mpan");

        // Display results:
        E1.printEmployee();
    }
}
/*
Output:
    Name: Mingda Pan
    Alias: mpan
    Taxes: $240.00
 */

C# nyelvspecifikáció

További információ: C# nyelvi specifikáció. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.

Lásd még