Junior
179
questionbank
Для каких целей используются поля с модификатором readonly в C#?
Answer from AI
sobes.tech AI
Поле с модификатором readonly в C# может быть инициализировано только в момент объявления поля или в конструкторе класса. После инициализации его значение не может быть изменено.
Цели использования:
- Обеспечение неизменяемости: Гарантирует, что значение поля не будет случайно изменено после создания объекта. Это повышает надежность кода и упрощает отладку.
- Константы для каждого экземпляра: В отличие от статических констант (
const),readonlyполя могут иметь разные значения для разных экземпляров класса. - Инициализация в конструкторе: Позволяет установить конечное значение поля на основе логики конструктора, что невозможно для
constполей (они должны быть инициализированы литералом или константой во время компиляции). - Повышение производительности при работе со структурами: Для структур
readonlyполя могут улучшить производительность, так как компилятор может делать определенные оптимизации, зная, что значение не изменится.
Пример:
public class MyClass
{
public readonly int ImmutableValue; // Может быть инициализировано здесь или в конструкторе
public readonly string Name;
// Конструктор для присвоения значения readonly полям
public MyClass(int value, string name)
{
ImmutableValue = value;
Name = name;
}
// Этот метод вызовет ошибку компиляции, так как пытается изменить readonly поле
// public void TryChangeValue(int newValue)
// {
// ImmutableValue = newValue; // Ошибка компиляции
// }
}