В C# ключевые слова const
и readonly
используются для объявления неизменяемых значений, но между ними есть важные различия.
const
const
(константа) — это неизменяемое значение, которое должно быть определено во время компиляции. Такие значения хранятся в самом коде и не могут быть изменены в процессе работы программы.
Особенности const
:
- Должно быть инициализировано при объявлении.
- Компилятор заменяет использование
const
его значением в коде. - Поддерживает только примитивные типы, строки и
enum
. - Нельзя использовать нестатические поля или методы для инициализации.
Пример использования const
:
class MathConstants
{
public const double Pi = 3.14159;
}
readonly
readonly
— это модификатор для полей, который позволяет инициализировать их только в момент объявления или в конструкторе класса.
Особенности readonly
:
- Может быть инициализировано в момент объявления или в конструкторе.
- Значение можно задать динамически во время выполнения.
- Поддерживает ссылочные типы и структуры.
- Используется для создания неизменяемых объектов, значение которых известно только во время выполнения.
Пример использования readonly
:
class Config
{
public readonly int MaxConnections;
public Config(int maxConnections)
{
MaxConnections = maxConnections;
}
}
Когда использовать
const
стоит использовать для значений, которые никогда не изменятся, например, математических констант.readonly
подходит для значений, которые остаются неизменяемыми после инициализации, но могут задаваться динамически, например, параметры конфигурации.