this (référence C#)
Le mot clé this
fait référence à l’instance actuelle de la classe et est également utilisé comme 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.
Voici quelques utilisations courantes de this
:
Pour qualifier des membres masqués par des noms similaires, par exemple :
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; } }
Pour passer un objet comme paramètre à d’autres méthodes, par exemple :
CalcTax(this);
Pour déclarer des indexeurs, par exemple :
public int this[int param] { get { return array[param]; } set { array[param] = value; } }
Les fonctions membres statiques, car ils existent au niveau de la classe et non comme faisant partie d’un objet, n’ont pas de pointeur this
. Une erreur consiste à faire référence à this
dans une méthode statique.
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, voir 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.