Как можно присвоить значение полю, помеченному readonly?

C# / .NET Основы языка Junior

Что это: readonly можно инициализировать при объявлении поля или в любом instance-конструкторе того же класса. После завершения конструкции объект присвоить нельзя.

Почему важно: Отличает readonly от const и объясняет, когда поле может зависеть от runtime-данных.

Под капотом: readonly хранится как обычное поле с проверкой записи только из ctor на этапе компиляции. IL использует stfld в конструкторе, дальнейшие записи запрещены.

Типичная ошибка: Пытаться изменить readonly из обычного метода после создания объекта или путать с const, который задаётся только литералом на этапе компиляции.

public class Settings
{
  public readonly int Id = 1;
  public readonly DateTime Created;

  public Settings() => Created = DateTime.UtcNow;
}