const (Справочник по C#)
Для объявления константного поля или константной локальной используется ключевое слово const. Константные поля и локальные не являются переменными и не могут быть изменены. Константы могут быть числами, логическими значениями, строками или нулевыми ссылками. Не создавайте константу для предоставления сведений, которые могут измениться в любое время. Например, не используйте константное поле для хранения цены услуги, номера версии продукта или торгового названия компании. Эти значения могут со временем измениться, а поскольку константы распространяются компиляторами, для отражения изменений потребуется повторная компиляция остальных кодов, скомпилированных с использованием ваших библиотек. См. также ключевое слово readonly. Например:
const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";
Заметки
Тип объявления константы указывает на тип членов, которые вводятся объявлением. Инициализатор константной локальной или константного поля должен быть выражением константы, поддерживающим явное преобразование в конечный тип.
Выражение константы — это выражение, которое можно полностью оценить во время компиляции. Таким образом, единственно возможными значениями для констант типов ссылок являются string и нулевые ссылки.
Объявление константы может объявлять несколько констант, например:
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#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.
См. также
Ссылки
Модификаторы (Справочник по C#)
Основные понятия
Руководство по программированию на C#