const (Справочник по C#)
Обновлен: Ноябрь 2007
Ключевое слово const используется для изменения объявления поля или локальной переменной. Оно указывает на то, что значение поля или локальной переменной является постоянным и не может быть изменено. Пример.
const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";
Заметки
Тип объявления константы указывает тип членов, представленных объявлением. Константное выражение должно выдавать значение целевого типа или типа, который можно неявно преобразовать к целевому типу.
Константное выражение – это выражение, значение которого можно полностью вычислить во время компиляции. Таким образом, единственными возможными значениями для констант ссылочных типов являются string и null.
В объявлении константы может быть объявлено несколько констант, например:
public const double x = 1.0, y = 2.0, z = 3.0;
Модификатор static не допускается в объявлении константы.
Константа может участвовать в константном выражении, как показано в следующем примере:
public const int c1 = 5;
public const int c2 = c1 + 100;
Примечание. |
---|
Ключевое слово readonly отличается от ключевого слова const. Поле с модификатором const может быть инициализировано только при объявлении поля. Поле с модификатором readonly может быть инициализировано при объявлении или в конструкторе. Следовательно, поля с модификатором readonly могут иметь различные значения в зависимости от использованного конструктора. Кроме того, поле const является константой во время компиляции, а поле readonly можно использовать для констант времени выполнения, как показано в следующей строке: public static readonly uint l1 = (uint)DateTime.Now.Ticks; |
Пример
public class ConstTest
{
class SampleClass
{
public int x;
public int y;
public const int c1 = 5;
public const int c2 = c1 + 5;
public SampleClass(int p1, int p2)
{
x = p1;
y = p2;
}
}
static void Main()
{
SampleClass mC = new SampleClass(11, 22);
Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
Console.WriteLine("c1 = {0}, c2 = {1}",
SampleClass.c1, SampleClass.c2 );
}
}
/* Output
x = 11, y = 22
c1 = 5, c2 = 10
*/
В этом примере демонстрируется использование констант в качестве локальных переменных.
public class SealedTest
{
static void Main()
{
const int c = 707;
Console.WriteLine("My local constant = {0}", c);
}
}
// Output: My local constant = 707
Спецификация языка C#
Дополнительные сведения см. в следующих разделах документа Спецификация языка C#:
6.1.6 Неявное преобразование константных выражений
8.5.2 Объявления локальных констант
См. также
Основные понятия
Руководство по программированию в C#
Ссылки
Модификаторы (Справочник по C#)