Junior
За какви цели се използват полетата с модификатора readonly в C#?
sobes.tech AI
Отговор от 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; // Грешка при компилация
// }
}