C# Language lecture seulement


Exemple

Le mot clé readonly est un modificateur de champ. Lorsqu'une déclaration de champ inclut un modificateur readonly , les affectations à ce champ ne peuvent avoir lieu que dans le cadre de la déclaration ou dans un constructeur de la même classe.

Le mot clé readonly est différent du mot clé const . Un champ const ne peut être initialisé qu'à la déclaration du champ. Un champ readonly peut être initialisé à la déclaration ou dans un constructeur. Par conséquent, les champs en readonly peuvent avoir des valeurs différentes selon le constructeur utilisé.

Le mot-clé readonly est souvent utilisé lors de l'injection de dépendances.

class Person
{
    readonly string _name;
    readonly string _surname = "Surname";

    Person(string name)
    {
        _name = name;
    }
    void ChangeName()
    {
        _name = "another name"; // Compile error
        _surname = "another surname"; // Compile error
    }
}

Note: La déclaration d'un champ readonly n'implique pas l' immuabilité . Si le champ est un type de référence, le contenu de l'objet peut être modifié. Readonly est généralement utilisé pour empêcher que l'objet soit écrasé et assigné uniquement lors de l' instanciation de cet objet.

Remarque: Dans le constructeur, un champ en lecture seule peut être réaffecté

public class Car
{
    public double Speed {get; set;}
}

//In code

private readonly Car car = new Car();

private void SomeMethod()
{
    car.Speed = 100;
}