C# Language sola lettura

Esempio

La parola chiave readonly è un modificatore di campo. Quando una dichiarazione di campo include un modificatore di readonly , le assegnazioni a quel campo possono avvenire solo come parte della dichiarazione o in un costruttore della stessa classe.

La parola chiave readonly è diversa dalla parola chiave const . Un campo const può essere inizializzato solo alla dichiarazione del campo. Un campo di readonly può essere inizializzato o alla dichiarazione o in un costruttore. Pertanto, i campi di readonly possono avere valori diversi a seconda del costruttore utilizzato.

La parola chiave readonly viene spesso utilizzata quando si inseriscono le dipendenze.

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
    }
}

Nota: la dichiarazione di un campo in sola lettura non implica l' immutabilità . Se il campo è un tipo di riferimento, è possibile modificare il contenuto dell'oggetto. In sola lettura viene in genere utilizzato per impedire che l'oggetto venga sovrascritto e assegnato solo durante l' istanziazione di tale oggetto.

Nota: all'interno del costruttore è possibile riassegnare un campo di sola lettura

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

//In code

private readonly Car car = new Car();

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