Константы (Руководство по программированию на C#)
Константы — это постоянные значения, которые известны во время компиляции и не изменяются во время выполнения программы. Константы должны объявляться с модификатором const. Только встроенные типы C# могут быть объявлены как const
. Константы ссылочного типа, отличные от того, String которые могут быть инициализированы только с значением NULL . Пользовательские типы, включая классы, структуры и массивы, не могут объявляться как const
. Модификатор readonly позволяет создать класс, структуру или массив, которые инициализируются один раз (например, в конструкторе), и впоследствии изменить их нельзя.
C# не поддерживает методы, свойства или события const
.
Тип перечисления позволяет определять именованные константы для целочисленных встроенных типов (например int
, uint
, long
и т. д.). Дополнительные сведения см. в разделе Перечисление.
Константы должны инициализироваться сразу после объявления. Например:
class Calendar1
{
public const int Months = 12;
}
В этом примере константа Months
всегда имеет значение 12, и его не может изменить даже сам класс. На самом деле в случае, если компилятор встречает идентификатор константы в исходном коде C# (например, Months
), он подставляет значение литерала непосредственно в создаваемый им промежуточный язык (IL). Поскольку с константой в среде выполнения не связан адрес ни одной переменной, поля const
не могут передаваться по ссылке и отображаться в выражении как левостороннее значение.
Примечание.
Будьте внимательны, ссылаясь на постоянные значения, определенные в другом коде, например, в DLL. Если в новой версии DLL для константы определяется новое значение, старое значение литерала хранится в вашей программе вплоть до повторной компиляции для новой версии.
Несколько констант одного типа можно объявить одновременно, например:
class Calendar2
{
public const int Months = 12, Weeks = 52, Days = 365;
}
Выражение, которое используется для инициализации константы, может ссылаться на другую константу, если не создает циклическую ссылку. Например:
class Calendar3
{
public const int Months = 12;
public const int Weeks = 52;
public const int Days = 365;
public const double DaysPerWeek = (double) Days / (double) Weeks;
public const double DaysPerMonth = (double) Days / (double) Months;
}
Константы могут иметь пометку public, private, protected, internal, protected internal или private protected. Эти модификаторы доступа определяют, каким образом пользователи класса смогут получать доступ к константе. Дополнительные сведения см. в статье Модификаторы доступа.
Доступ к константам осуществляется так, как если бы они были статическими полями, поскольку значение константы одинаково для всех экземпляров типа. Для их объявления используйте ключевое слово static
. Выражения, которые не относятся к классу, определяющему константу, должны включать имя класса, период и имя константы для доступа к этой константе. Например:
int birthstones = Calendar.Months;
Спецификация языка C#
Дополнительные сведения см. в спецификации языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.