Константы (Руководство по программированию на C#)
Константы представляют собой неизменные значения, известные во время компиляции и неизменяемые на протяжении времени существования программы. Константы объявляются с модификатором const. Только встроенные типы C# (за исключением Object) могут быть объявлены как const. Список встроенных типов см. в разделе Таблица встроенных типов (Справочник по C#). Определяемые пользователем типы, включая классы, структуры и массивы, не могут быть const. Для создания класса, структуры или массива, которые инициализируются один раз во время выполнения (например, в конструкторе) и после этого не могут быть изменены, используется модификатор readonly.
Язык C# не поддерживает методы, свойства и события с ключевым словом const.
Тип перечисления позволяет определять именованные константы для целочисленных встроенных типов (например, int, uint, long и т. д.). Дополнительные сведения см. в разделе emum (Справочник по C#).
Константы должны инициализировать сразу после объявления. Примеры.
class Calendar1
{
public const int months = 12;
}
В этом примере константа months всегда имеет значение 12, и ее значение не может быть изменено даже самим классом. Когда компилятор встречает идентификатор константы в исходном коде C# (например, months), он подставляет литеральное значение непосредственно в его создающий код IL. Поскольку адрес переменной, связанный с константой во время выполнения, отсутствует, поля const не могут быть переданы по ссылке и отображены как значение l-value в выражении.
Примечание
При ссылке на значения констант, определенных в другом коде, например DLL, следует соблюдать осторожность.Если новое значение константы определяется в новой версии DLL, программа по-прежнему будет хранить старое литеральное значение вплоть до перекомпиляции в новую версию.
Несколько констант одного типа можно объявить одновременно, например:
class Calendar2
{
const int months = 12, weeks = 52, days = 365;
}
Используемое для инициализации константы выражение может ссылаться на другую константу, если при этом не создается циклическая ссылка. Примеры.
class Calendar3
{
const int months = 12;
const int weeks = 52;
const int days = 365;
const double daysPerWeek = (double) days / (double) weeks;
const double daysPerMonth = (double) days / (double) months;
}
Константы могут быть отмечены модификаторами public, private, protected, internal или protected internal. Эти модификаторы доступа определяют порядок доступа к константе для пользователей класса. Дополнительные сведения см. в разделе Модификаторы доступа (Руководство по программированию в C#).
Доступ к константам осуществляется так, как если бы они были статическими полями, поскольку значение константы одинаково для всех экземпляров типа. Для их объявления не нужно использовать ключевое слово static. В выражениях, которые не входят в класс, в котором определена константа, для доступа к ней необходимо использовать имя класса, точку и имя этой константы. Примеры.
int birthstones = Calendar.months;
Спецификация языка C#
Дополнительные сведения см. в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Ссылки
Классы и структуры (Руководство по программированию в C#)
Свойства (Руководство по программированию в C#)
Типы (Руководство по программированию на C#)
Основные понятия
Руководство по программированию на C#