В 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подходит для значений, которые остаются неизменяемыми после инициализации, но могут задаваться динамически, например, параметры конфигурации.