Junior
À quelles fins sont utilisés les champs avec le modificateur readonly en C#?
sobes.tech IA
Réponse de l'IA
Un champ avec le modificateur readonly en C# ne peut être initialisé qu'au moment de la déclaration du champ ou dans le constructeur de la classe. Après l'initialisation, sa valeur ne peut pas être modifiée.
Objectifs d'utilisation:
- Assurer l'immuabilité: Garantit que la valeur du champ ne sera pas modifiée accidentellement après la création de l'objet. Cela augmente la fiabilité du code et facilite le débogage.
- Constantes pour chaque instance: Contrairement aux constantes statiques (
const), les champsreadonlypeuvent avoir des valeurs différentes pour différentes instances de la classe. - Initialisation dans le constructeur: Permet de définir une valeur finale pour le champ basée sur la logique du constructeur, ce qui n'est pas possible pour les champs
const(qui doivent être initialisés avec un littéral ou une constante lors de la compilation). - Amélioration des performances lors de l'utilisation de structures: Pour les structures, les champs
readonlypeuvent améliorer les performances, car le compilateur peut effectuer certaines optimisations en sachant que la valeur ne changera pas.
Exemple:
public class MyClass
{
public readonly int ImmutableValue; // Peut être initialisé ici ou dans le constructeur
public readonly string Name;
// Constructeur pour assigner des valeurs aux champs readonly
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// Cette méthode provoquera une erreur de compilation, car elle tente de modifier un champ readonly
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Erreur de compilation
// }
}