Menu
Coddy logo textTech

Le mot-clé 'this'

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 4 sur 70.

Le mot-clé this fait référence à l'instance actuelle d'une classe. Il est utilisé pour accéder aux membres de l'instance et faire la distinction entre les paramètres et les champs portant le même nom.

Utilisez this pour distinguer les champs des paramètres

public class Person
{
    private string name;
    private int age;
    
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

Sans this, le paramètre masquerait le champ

// Cela ne fonctionnera pas comme prévu
public Person(string name, int age)
{
    name = name;  // Assigne le paramètre à lui-même !
    age = age;    // Assigne le paramètre à lui-même !
}

Utilisez this avec des propriétés

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    
    public Product(string name, decimal price)
    {
        this.Name = name;
        this.Price = price;
    }
    
    public void DisplayInfo()
    {
        Console.WriteLine($"{this.Name}: ${this.Price}");
    }
}

Utilisez this pour appeler un autre constructeur dans la même classe

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    
    public Rectangle(int width, int height)
    {
        this.Width = width;
        this.Height = height;
    }
    
    // Constructor for squares
    public Rectangle(int size) : this(size, size)
    {
    }
}

Exemple d'utilisation :

Rectangle rect = new Rectangle(5, 10);
Rectangle square = new Rectangle(5);  // Crée un 5x5

Le mot-clé this fait toujours référence à l'instance de l'objet actuel. Il est particulièrement utile lorsque les noms des paramètres correspondent aux noms des champs ou des propriétés, ce qui rend votre code plus clair et évite les erreurs.

challenge icon

Défi

Moyen

Complétez la classe Product en ajoutant un constructeur qui utilise le mot-clé this pour assigner les valeurs des paramètres aux propriétés. Implémentez également la méthode GetDescription() en utilisant this pour accéder aux propriétés.

La méthode GetDescription() doit retourner : "{Name} costs ${Price}"

Aide-mémoire

Le mot-clé this fait référence à l'instance actuelle d'une classe et est utilisé pour accéder aux membres de l'instance.

Utilisez this pour faire la distinction entre les champs et les paramètres portant le même nom :

public class Person
{
    private string name;
    private int age;
    
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

Sans this, le paramètre masque le champ et s'assigne à lui-même :

// Cela ne fonctionnera pas comme prévu
public Person(string name, int age)
{
    name = name;  // Assigne le paramètre à lui-même !
    age = age;    // Assigne le paramètre à lui-même !
}

Utilisez this avec des propriétés :

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    
    public Product(string name, decimal price)
    {
        this.Name = name;
        this.Price = price;
    }
    
    public void DisplayInfo()
    {
        Console.WriteLine($"{this.Name}: ${this.Price}");
    }
}

Utilisez this pour appeler un autre constructeur dans la même classe (chaînage de constructeurs) :

public class Rectangle
{
    public int Width { get; set; }
    public int Height { get; set; }
    
    public Rectangle(int width, int height)
    {
        this.Width = width;
        this.Height = height;
    }
    
    // Constructeur pour les carrés
    public Rectangle(int size) : this(size, size)
    {
    }
}

Rectangle square = new Rectangle(5);  // Crée un 5x5

Essayez vous-même

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        decimal price = decimal.Parse(Console.ReadLine());
        
        Product product = new Product(name, price);
        
        Console.WriteLine($"Product: {product.Name}");
        Console.WriteLine($"Price: ${product.Price}");
        Console.WriteLine(product.GetDescription());
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet