this (référence C#)this (C# Reference)

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.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.

Notes

Cet article traite de l’utilisation de this avec des instances de classe.This article discusses the use of this with class instances. Pour plus d’informations sur son utilisation dans les méthodes d’extension, consultez Méthodes d’extension.For more information about its use in extension methods, see Extension Methods.

Voici quelques utilisations courantes de this :The following are common uses of this:

  • Pour qualifier des membres masqués par des noms similaires, par exemple :To qualify members hidden by similar names, for example:

    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 :To pass an object as a parameter to other methods, for example:

    CalcTax(this);
    
  • Pour déclarer des indexeurs, par exemple :To declare indexers, for example:

    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.Static member functions, because they exist at the class level and not as part of an object, do not have a this pointer. Une erreur consiste à faire référence à this dans une méthode statique.It is an error to refer to this in a static method.

ExempleExample

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.In this example, this is used to qualify the Employee class members, name and alias, which are hidden by similar names. Il est également utilisé pour passer un objet à la méthode CalcTax, qui appartient à une autre classe.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
 */

spécification du langage C#C# language specification

Pour plus d'informations, voir la spécification du langage C#.For more information, see the C# Language Specification. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.The language specification is the definitive source for C# syntax and usage.

Voir aussiSee also