Maîtriser les propriétés en C# : guide complet avec accesseurs get/set
Les propriétés sont des membres nommés de classes, structures et interfaces. Les variables/méthodes membres sont appelées champs. Les propriétés étendent les champs et s'utilisent avec la même syntaxe. Elles utilisent des accesseurs pour lire, écrire ou manipuler les valeurs des champs privés.
Les propriétés ne nomment pas des emplacements de stockage. Elles ont des accesseurs qui lisent, écrivent ou calculent leurs valeurs.
Accesseurs
L'accesseur contient les instructions exécutables pour obtenir (get) ou définir (set) la propriété. Peut avoir get, set, ou les deux.
Exemple
// Propriété Code (string)
public string Code
{
get { return code; }
set { code = value; }
}
// Propriété Nom (string)
public string Nom
{
get { return nom; }
set { nom = value; }
}
// Propriété Age (int)
public int Age
{
get { return age; }
set { age = value; }
}
value est le mot-clé contextuel représentant la valeur assignée dans le set.
Exemple complet
using System;
namespace TutorielPoint
{
class Etudiant
{
private string code = "N.A";
private string nom = "inconnu";
private int age = 0;
public string Code
{
get { return code; }
set { code = value; }
}
public string Nom
{
get { return nom; }
set { nom = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public override string ToString()
{
return "Code = " + Code + ", Nom = " + Nom + ", Age = " + Age;
}
}
class DemoExemple
{
public static void Main()
{
Etudiant e = new Etudiant();
e.Code = "001";
e.Nom = "Zara";
e.Age = 9;
Console.WriteLine("Info Étudiant : {0}", e);
e.Age += 1;
Console.WriteLine("Info Étudiant : {0}", e);
Console.ReadKey();
}
}
}
Résultat :
Info Étudiant : Code = 001, Nom = Zara, Age = 9
Info Étudiant : Code = 001, Nom = Zara, Age = 10
Propriétés automatiques (C# 3.0+)
Syntaxe simplifiée quand pas de logique supplémentaire :
public string Nom { get; set; }
public int Age { get; set; }
Le compilateur génère le champ de support automatiquement.
Propriétés abstraites
Une classe abstraite peut avoir une propriété abstraite, implémentée dans la classe dérivée.
public abstract class Personne
{
public abstract string Nom { get; set; }
public abstract int Age { get; set; }
}
class Etudiant : Personne
{
private string code = "N.A";
private string nom = "N.A";
private int age = 0;
public string Code { get { return code; } set { code = value; } }
public override string Nom
{
get { return nom; }
set { nom = value; }
}
public override int Age
{
get { return age; }
set { age = value; }
}
}
Bonnes pratiques
- Utilisez propriétés au lieu de champs publics pour l'encapsulation
- Préférez propriétés automatiques pour cas simples
- Validez dans
set(ex:if (value < 0) throw ...) - Propriétés en lecture seule : seulement
get(ouiniten C# 9+)
Langue C
- Le pouvoir antimicrobien de l'argent : comment ce métal combat bactéries, champignons et virus
- Propriétés arithmétiques : associativité, commutativité et distributivité expliquées
- Règles des exposants : propriétés clés pour la manipulation algébrique
- Alliage molybdène-hafnium-carbone (MHC) – Alliage renforcé par particules pour très haute température
- AMPCO® 25 Forgings : Alliage haute performance pour matériaux de matrices supérieurs
- UGICHROM® 4462 – Revêtement chrome micro-fissuré haute performance pour systèmes hydrauliques et pneumatiques
- UGICHROM® 4362 – Acier inoxydable premium chrome micro-fissuré pour applications hydrauliques et pneumatiques
- Bainidur® 1300 : Alliage de forgeage haute résistance, faible risque de fissuration
- Bainidur® 7980 CN : Acier faiblement allié premium pour cémentation et carbonitruration supérieures