C# Language solo lectura


Ejemplo

La palabra clave readonly es un modificador de campo. Cuando una declaración de campo incluye un modificador de readonly , las asignaciones a ese campo solo pueden ocurrir como parte de la declaración o en un constructor en la misma clase.

La palabra clave readonly es diferente de la palabra clave const . Un campo const solo se puede inicializar en la declaración del campo. Un campo de readonly puede inicializarse en la declaración o en un constructor. Por lo tanto, los campos de readonly pueden tener diferentes valores dependiendo del constructor utilizado.

La palabra clave readonly se usa a menudo cuando se inyectan dependencias.

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 declaración de un campo de solo lectura no implica inmutabilidad . Si el campo es un tipo de referencia, entonces se puede cambiar el contenido del objeto. Readonly se usa normalmente para evitar que el objeto se sobrescriba y se asigne solo durante la creación de instancias de ese objeto.

Nota: Dentro del constructor se puede reasignar un campo de solo lectura.

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

//In code

private readonly Car car = new Car();

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