Partager via


Le mot clé « this »

Le this mot clé 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.

Remarque

Cet article décrit l’utilisation de this l’instance de récepteur dans le membre actuel. Pour plus d’informations sur son utilisation dans les méthodes d’extension, consultez le extension mot clé.

Voici les utilisations courantes de this:

  • Pour qualifier les 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 en tant que paramètre à d’autres méthodes, par exemple :

    CalcTax(this);
    
  • Pour déclarer des indexeurs, par exemple :

    public int this[int param]
    {
        get => array[param];
        set => array[param] = value;
    }
    

Les fonctions membres statiques, car elles existent au niveau de la classe et non dans le cadre d’un objet, n’ont pas de this pointeur. C'est une erreur de se référer à this dans une méthode statique.

Dans cet exemple, les paramètres nameet alias masquer les champs portant les mêmes noms. Le this mot clé qualifie ces variables en tant que Employee membres de classe. Le this mot clé spécifie également l’objet de la méthode CalcTax, qui appartient à une autre classe.

class Employee
{
    private string name;
    private string alias;

    // 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: {name}
        Alias: {alias}
        """);
        // Passing the object to the CalcTax method by using this:
        Console.WriteLine($"Taxes: {Tax.CalcTax(this):C}");
    }

    public decimal Salary { get; } = 3000.00m;
}

class Tax
{
    public static decimal CalcTax(Employee E)=> 0.08m * E.Salary;
}

class Program
{
    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