### В контексте структуры Если использовать readonly при определении структуры, то после инициализации экземпляра структуры его состояние нельзя изменить. Все поля в readonly структуре должны быть также отмечены как readonly, или они должны быть константными. Это ограничение делает readonly struct более предсказуемой и безопасной в использовании, потому что исключает возможность неожиданных изменений состояния. использование readonly в структурах может улучшить производительность, так как компилятор может произвести оптимизации, зная, что состояние объекта не изменится. Это может уменьшить накладные расходы, особенно при передаче структуры в качестве аргумента метода. Пример ```csharp public readonly struct Index { public readonly int Value; public Index(int value) { Value = value; } } Index index = new Index(5); // index.Value = 10; // Ошибка компиляции, так как структура readonly ``` <br> ### В контексте метода структуры Этот модификатор указывает, что метод не будет изменять состояние структуры. Это позволяет компилятору улучшить производительность при работе с методами readonly структуры. <br> ### В контексте поля, свойства Позволяет сделать поле или свойство неизменяемым (immutable) <br> Можно инициализировать поле с readonly только в самом поле или в конструкторе класса. (В данных местах readonly поле может быть изменено несколько раз.) ```csharp public readonly int MyField; ``` Ключевое слово readonly гарантирует, что после начального присвоения значения нельзя изменить значение поля. <br> Если мы попытаемся указать свойство в качестве дефолтового, то Rider будет ругаться так: «Default parameter value for 'color' must be a compile-time constant» ![Модификатор readonly-2](images/Модификатор%20readonly-2.png)