Freigeben über


Das Schlüsselwort „this”

Das this Schlüsselwort bezieht sich auf die aktuelle Instanz der Klasse. Sie dient auch als Modifizierer für den ersten Parameter einer Erweiterungsmethode.

Hinweis

In diesem Artikel wird die Verwendung von this Verweisen auf die Empfängerinstanz im aktuellen Element erläutert. Weitere Informationen zur Verwendung in Erweiterungsmethoden finden Sie im extension Schlüsselwort.

Die C#-Sprachreferenz dokumentiert die zuletzt veröffentlichte Version der C#-Sprache. Außerdem enthält sie eine erste Dokumentation zu Funktionen in der öffentlichen Vorschau für die kommende Sprachversion.

In der Dokumentation werden alle Features identifiziert, die in den letzten drei Versionen der Sprache oder in der aktuellen öffentlichen Vorschau eingeführt wurden.

Tipp

Informationen dazu, wann ein Feature erstmals in C# eingeführt wurde, finden Sie im Artikel zum Versionsverlauf der C#-Sprache.

Häufig verwendete Verwendungsmöglichkeiten:this

  • Qualifizieren von Mitgliedern, die durch ähnliche Namen ausgeblendet werden, 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;
        }
    }
    
  • Übergeben eines Objekts als Parameter an andere Methoden.

    CalcTax(this);
    
  • Deklarieren von Indexern, z. B.:

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

Statische Memberfunktionen sind auf Klassenebene und nicht als Teil eines Objekts vorhanden. Sie haben this keinen Zeiger. this Verweisen auf eine statische Methode ist ein Fehler.

Im folgenden Beispiel werden die Parameter und namealias Felder mit denselben Namen ausgeblendet. 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