В чем разница между const и readonly в C#?
Этот вопрос проверяет различие между двумя способами объявления неизменяемых значений в C#.
Короткий ответ
const задает константу, значение которой невозможно изменить после компиляции, тогда как readonly позволяет задать значение переменной только в момент инициализации или в конструкторе.
Длинный ответ
В C# ключевые слова const и readonly используются для объявления неизменяемых данных, но они имеют важные различия:
const:
- Значение присваивается на момент компиляции.
- Используется для значений, которые не должны изменяться в программе.
- Нельзя изменять значение const после компиляции.
readonly:
- Значение присваивается во время выполнения, обычно в конструкторе.
- Может изменяться в момент инициализации или в конструкторе, но не в других местах.
- Подходит для значений, которые зависят от контекста выполнения.
Пример:
public class Example
{
public const int MaxValue = 100; // Это константа
public readonly int minValue; // Это поле readonly
public Example(int min)
{
minValue = min; // Значение readonly присваивается в конструкторе
}
}В этом примере MaxValue является константой, а minValue — только для чтения и может быть изменено только в конструкторе.