Freigeben über


Das Schlüsselwort „this”

Das this Schlüsselwort bezieht sich auf die aktuelle Instanz der Klasse und wird auch als Modifizierer des ersten Parameters einer Erweiterungsmethode verwendet.

Hinweis

In diesem Artikel wird die Verwendung von this mit Klasseninstanzen diskutiert. Weitere Informationen zur Verwendung in Erweiterungsmethoden finden Sie im extension Schlüsselwort.

Im Folgenden finden Sie allgemeine Verwendungsmöglichkeiten:this

  • Zum Qualifizieren von Membern, die durch ähnliche Namen ausgeblendet werden, wie z.B.:

    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;
        }
    }
    
  • So übergeben Sie ein Objekt als Parameter an andere Methoden, z. B.:

    CalcTax(this);
    
  • So deklarieren Sie Indexer, z. B.:

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

Statische Memberfunktionen, da sie auf Klassenebene und nicht als Teil eines Objekts vorhanden sind, weisen this keinen Zeiger auf. Es ist ein Fehler, auf this in einer statischen Methode zu verweisen.

In diesem Beispiel blenden die Parameter name und alias Felder mit denselben Namen aus. Das this Schlüsselwort kennzeichnet diese Variablen als Employee Klassenmitglieder. Das this Schlüsselwort gibt auch das Objekt für die Methode CalcTaxan, die zu einer anderen Klasse gehört.

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#-Sprachspezifikation

Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die endgültige Quelle für C#-Syntax und -Verwendung.

Siehe auch