this (C#-Referenz)this (C# Reference)

Das Schlüsselwort this verweist auf die aktuelle Instanz der Klasse und wird auch als Modifizierer des ersten Parameters einer Erweiterungsmethode verwendet.The this keyword refers to the current instance of the class and is also used as a modifier of the first parameter of an extension method.

Hinweis

Dieser Artikel behandelt die Verwendung von this mit Klasseninstanzen.This article discusses the use of this with class instances. Weitere Informationen zu seiner Verwendung in Erweiterungsmethoden finden Sie unter Erweiterungsmethoden.For more information about its use in extension methods, see Extension Methods.

Häufige Verwendungen von this sind wie folgt:The following are common uses of this:

  • Zum Qualifizieren von Membern, die durch ähnliche Namen ausgeblendet werden, wie z.B.:To qualify members hidden by similar names, for example:
public Employee(string name, string alias)
{
    // Use this to qualify the fields, name and alias:
    this.name = name;
    this.alias = alias;
}
  • Zum Übergeben eines Objekts als ein Parameter an eine andere Methode, wie z.B.:To pass an object as a parameter to other methods, for example:

    CalcTax(this);  
    
  • Zum Deklarieren von Indexern, wie z.B.:To declare indexers, for example:

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

Statische Memberfunktionen haben keinen this-Zeiger, da sie auf Klassenebene und nicht als Teil eines Objekts existieren.Static member functions, because they exist at the class level and not as part of an object, do not have a this pointer. Es ist ein Fehler, in einer statischen Methode auf this zu verweisen.It is an error to refer to this in a static method.

BeispielExample

In diesem Beispiel wird this verwendet, um die Employee-Klassenmember name und alias zu qualifizieren, die von ähnlichen Namen ausgeblendet werden.In this example, this is used to qualify the Employee class members, name and alias, which are hidden by similar names. Er wird auch verwendet, um ein Objekt an die Methode CalcTax zu übergeben, die zu einer anderen Klasse gehört.It is also used to pass an object to the method CalcTax, which belongs to another class.

class Employee
{
    private string name;
    private string alias;
    private decimal salary = 3000.00m;

    // 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: {0}\nAlias: {1}", name, alias);
        // Passing the object to the CalcTax method by using this:
        Console.WriteLine("Taxes: {0:C}", Tax.CalcTax(this));
    }

    public decimal Salary
    {
        get { return salary; }
    }
}

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

class MainClass
{
    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#-ProgrammiersprachenspezifikationC# Language Specification

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

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-SchlüsselwörterC# Keywords
basebase
MethodenMethods