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 5x5Le 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.
Défi
MoyenComplé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 5x5Essayez 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());
}
}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
1Fondamentaux de la POO
Fichiers externesEspaces de noms et directivesIntro aux classes et objetsLe mot-clé 'this'Méthodes et paramètresChamps vs PropriétésConstructeursInitialiseurs d'objetsRécapitulatif - Calculatrice simple4Héritage
Syntaxe de base de l'héritage (:)Le mot-clé 'base'Mots-clés Virtual & OverrideClasses scelléesLa classe de base 'object'Récapitulatif - Hiérarchie des employés7Fonctionnalités avancées
Surcharge d'opérateursIndexeurs (this[])Redéfinition de ToString()Méthodes d'extensionRécapitulatif - Liste personnalisée10Patrons de conception - Partie 1
Introduction aux patrons de conceptionSingleton Thread-SafePatron FabriquePatron Observateur (Événements)Patron Stratégie2Propriétés et membres statiques
Propriétés auto-implémentéesPropriétés en lecture/écriture seuleChamps et méthodes statiquesClasses statiquesMembres à corps d'expression5Polymorphisme & Interfaces
Polymorphisme : Compilation vs ExécutionInterface vs Classe AbstraiteInterfaces MultiplesInterfaces ExplicitesUpcasting & DowncastingRécapitulatif - Calculateur de Formes8Concepts avancés de la POO
Composition plutôt qu'héritageGénériques (Classes et Méthodes)Délégués et ÉvénementsAttributs et RéflexionIDisposable et l'instruction usingBases de l'Injection de Dépendances11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Architecture des classes
Données d'instance vs statiquesMots-clés 'readonly' & 'const'Champs de supportRécapitulatif - Gestionnaire de compte bancaire6Encapsulation
Modificateurs d'accèsPropriétés pour l'encapsulationImplémentation du masquage de donnéesPatterns d'immuabilitéRécapitulatif - Dossiers d'étudiants12Projet : Système de gestion de bibliothèque
Structure du projetModèles Livre et Utilisateur