Мне нужно вмешаться, чтобы сказать, что я чувствую, что уже достигнутые консенсусные ответы неполны.
Взяв на себя смелость обобщить эти ответы, мы пришли к выводу, что мы должны рассмотреть следующий код, чтобы НЕ БЫТЬ объявлением переменной, а скорее своего рода объявлением макроса, где компилятор вставляет значение const везде, где используется идентификатор:
const int foo = 42;
Однако этот ответ обходит вопросы, которые возникают, если const «переменная» объявляется с использованием (возможно, сложного) константного выражения, такого как следующее:
const double H = 1.23e-2, Q = 7.65e-4, nu = 0.3;
const double Reynolds = H*H*H*H / Q / (1d - nu);
В таком случае имеет значение, будет ли компилятор вычислять выражение один раз и «сохраняет» результат для повторного использования (например, статическая переменная), или он выполняет выражение каждый раз, когда используется идентификатор (например, макрос #define в C / C ++).
В моих собственных поисках я нашел следующее описание в http://www.techopedia.com/definition/3768/constant-c, в котором говорится об этой проблеме:
В контексте C # константа - это тип поля или локальной переменной, значение которой устанавливается во время компиляции и никогда не может быть изменено во время выполнения. Это похоже на переменную, имея имя, значение и место в памяти. Однако он отличается от переменной своей характеристикой инициализации только один раз в приложении. Константа объявляется с использованием ключевого слова "const".
По общему признанию, часть "ячейки памяти" является своего рода натяжкой - я предполагаю, что значение const хранится где-то локально во время компиляции. Как упоминалось в другом месте, вы никогда не сможете получить доступ или ссылаться на эту память в своем коде. В противном случае это согласуется с тем, что я прочитал в спецификации языка C #:
8.5.2 Локальные постоянные объявления
A объявление локальной константы объявляет одну или несколько локальных констант.
локальная постоянная декларация:
const type {константа-декларатор,} константа-декларатор
постоянная описатель:
идентификатор = константа-выражение
И
7.19 Постоянные выражения
A константное выражение - это выражение, которое может быть полностью оценено во время компиляции.
постоянное выражение:
выражение
...
Когда выражение удовлетворяет перечисленным выше требованиям, оно вычисляется во время компиляции. Это верно, даже если выражение является подвыражением большего выражения, содержащего непостоянные конструкции.
Любые отзывы об этом "кванзере" приветствуются: ^)