В C# ключевые слова const и readonly используются для объявления неизменяемых значений, но имеют важные отличия:
Какие отличия есть между ключевыми словами const и readonly в C#?
В C# ключевые слова const и readonly используются для объявления неизменяемых значений, но имеют важные отличия:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В C# ключевые слова const и readonly используются для объявления неизменяемых значений, но имеют важные отличия:
-
const
-
Значение должно быть известно на этапе компиляции.
-
Объявляется и инициализируется в момент объявления.
-
Является статическим по умолчанию (неявно
static). -
Используется для констант, которые не изменятся никогда и известны заранее (например, числа, строки).
-
Пример:
const double Pi = 3.14159;
-
-
readonly
-
Значение может быть установлено либо при объявлении, либо в конструкторе.
-
Позволяет иметь разные значения для разных экземпляров класса (если не статическое).
-
Значение нельзя изменить после завершения конструктора.
-
Используется, когда значение известно только во время выполнения, но не должно изменяться после инициализации.
-
Пример:
public class MyClass { public readonly DateTime CreationTime; public MyClass() { CreationTime = DateTime.Now; } }
-
Таким образом, const — это компилируемая константа, а readonly — неизменяемое после инициализации поле, которое может быть установлено во время выполнения.