Константы (руководство по программированию на C#)
Обновлен: Ноябрь 2007
Константы представляют собой неизменные значения, известные во время компиляции и неизменяемые на протяжении времени существования программы. Константы объявляются с модификатором const. Только встроенные типы C# (за исключением System.Object) могут быть объявлены как const. Список встроенных типов см. в разделе Таблица встроенных типов (Справочник по C#). Определяемые пользователем типы, включая классы, структуры и массивы, не могут быть const. Для создания класса, структуры или массива, которые инициализируются один раз во время выполнения (например, в конструкторе) и после этого не могут быть изменены, используется модификатор readonly.
Язык C# не поддерживает методы, свойства и события с ключевым словом const.
Тип перечисления позволяет определять именованные константы для целочисленных встроенных типов (например, int, uint, long и т. д.). Дополнительные сведения см. в разделе Enum (Справочник по 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 или protectedinternal. Эти модификаторы доступа определяют порядок доступа к константе для пользователей класса. Дополнительные сведения см. в разделе Модификаторы доступа (Руководство по программированию в C#).
Доступ к константам осуществляется так, как если бы они были статическими полями, поскольку значение константы одинаково для всех экземпляров типа. Для их объявления не нужно использовать ключевое слово static. В выражениях, которые не входят в класс, в котором определена константа, для доступа к ней необходимо использовать имя класса, точку и имя этой константы. Например:
int birthstones = Calendar.months;
Спецификация языка C#
Дополнительные сведения см. в следующем разделе документа Спецификация языка C#:
- 10.4 Константы
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Классы и структуры (Руководство по программированию в C#)
Свойства (руководство по программированию в C#)
Типы (руководство по программированию в C#)