### В контексте структуры
Если использовать 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»
