Sobes.tech
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:

  1. 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.
  2. Constantes pour chaque instance: Contrairement aux constantes statiques (const), les champs readonly peuvent avoir des valeurs différentes pour différentes instances de la classe.
  3. 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).
  4. Amélioration des performances lors de l'utilisation de structures: Pour les structures, les champs readonly peuvent 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
    // }
}