Sdílet prostřednictvím


Klíčové slovo this

Klíčové slovo this odkazuje na aktuální instanci třídy a používá se také jako modifikátor prvního parametru metody rozšíření.

Poznámka:

Tento článek popisuje použití this s instancemi třídy. Další informace o jeho použití v rozšiřujících metodách naleznete v klíčovém slově extension .

Toto jsou běžná použití this:

  • Aby bylo možné kvalifikovat členy skryté podobnými jmény, například:

    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;
        }
    }
    
  • Předání objektu jako parametru jiným metodám, například:

    CalcTax(this);
    
  • Deklarace indexerů, například:

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

Statické členské funkce, protože existují na úrovni třídy, a ne jako součást objektu, nemají this ukazatel. Je chybou odkazovat na this ve statické metodě.

V tomto příkladu parametry namea alias skryjte pole se stejnými názvy. Klíčové this slovo kvalifikuje tyto proměnné jako Employee členy třídy. Klíčové this slovo také určuje objekt pro metodu CalcTax, která patří do jiné třídy.

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
 */

Specifikace jazyka C#

Další informace najdete ve specifikaci jazyka C# . Specifikace jazyka je konečným zdrojem syntaxe a použití jazyka C#.

Viz také