Looking for c# Keywords? Try Ask4Keywords

C# Language только для чтения


пример

Ключевое слово readonly является модификатором поля. Когда объявление поля включает модификатор readonly , присваивания этому полю могут выполняться только как часть объявления или в конструкторе того же класса.

Ключевое слово readonly отличается от ключевого слова const . Поле const может быть инициализировано только при объявлении поля. Поле readonly может быть инициализировано либо в объявлении, либо в конструкторе. Поэтому поля readonly могут иметь разные значения в зависимости от используемого конструктора.

Ключевое слово readonly часто используется при инъекции зависимостей.

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

Примечание. Объявление поля readonly не подразумевает неизменность . Если поле является ссылочным типом, то содержимое объекта может быть изменено. Readonly обычно используется для предотвращения перезаписи и назначения объекта только во время создания экземпляра этого объекта.

Примечание. Внутри конструктора поле readonly можно переназначить

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

//In code

private readonly Car car = new Car();

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