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.

Voir aussi