this (C#-Referenz)
Das Schlüsselwort this
verweist auf die aktuelle Instanz der Klasse und wird auch als Modifizierer des ersten Parameters einer Erweiterungsmethode verwendet.
Hinweis
Dieser Artikel behandelt die Verwendung von this
mit Klasseninstanzen. Weitere Informationen zu seiner Verwendung in Erweiterungsmethoden finden Sie unter Erweiterungsmethoden.
Häufige Verwendungen von this
sind wie folgt:
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; } }
Zum Übergeben eines Objekts als ein Parameter an eine andere Methode, wie z.B.:
CalcTax(this);
Zum Deklarieren von Indexern, wie z. B.:
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. Es ist ein Fehler, in einer statischen Methode auf this
zu verweisen.
Beispiel
In diesem Beispiel wird this
verwendet, um die Employee
-Klassenmember name
und alias
zu qualifizieren, die von ähnlichen Namen ausgeblendet werden. Er wird auch verwendet, um ein Objekt an die Methode CalcTax
zu übergeben, die zu einer anderen Klasse gehört.
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#-Sprachspezifikation
Weitere Informationen erhalten Sie unter C#-Sprachspezifikation. Die Sprachspezifikation ist die verbindliche Quelle für die Syntax und Verwendung von C#.