Как можно присвоить значение полю, помеченному 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;
}