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#)

readonly (Справочник по C#)

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#