this (référence C#)
Le mot clé this fait référence à l'instance actuelle de la classe et est également utilisé comme un modificateur du premier paramètre d'une méthode d'extension.
Notes
Cet article traite de l'utilisation de this avec des instances de classe. Pour plus d'informations sur son utilisation dans les méthodes d'extension, consultez Méthodes d'extension (Guide de programmation C#).
Voici quelques emplois courants de this :
- Qualification de membres masqués par des noms similaires, par exemple :
public Employee(string name, string alias)
{
// Use this to qualify the fields, name and alias:
this.name = name;
this.alias = alias;
}
Passage d'un objet comme paramètre à d'autres méthodes, par exemple :
CalcTax(this);
Déclaration d'indexeurs, par exemple :
public int this[int param]
{
get { return array[param]; }
set { array[param] = value; }
}
Les fonctions membre static, parce qu'elles existent au niveau de la classe et pas dans le cadre d'un objet, n'ont pas de pointeur this. Faire référence à this dans une méthode statique est une erreur.
Exemple
Dans cet exemple, this est utilisé pour qualifier les membres de la classe Employee, name et alias, qui sont masqués par des noms similaires. Il est également utilisé pour passer un objet à la méthode CalcTax, qui appartient à une autre classe.
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
*/
Spécification du langage C#
Pour plus d'informations, consultez la Spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.
Voir aussi
Référence
Méthodes (guide de programmation C#)