const (Referência C#)

Use a const palavra-chave para declarar um campo constante ou uma constante local. Campos constantes e locais não são variáveis e não podem ser modificados. As constantes podem ser números, valores booleanos, cadeias de caracteres ou uma referência nula. Não crie uma constante para representar informações que você espera alterar a qualquer momento. Por exemplo, não use um campo constante para armazenar o preço de um serviço, o número da versão de um produto ou o nome da marca de uma empresa. Esses valores podem mudar ao longo do tempo e, como os compiladores propagam constantes, outros códigos compilados com suas bibliotecas terão que ser recompilados para ver as alterações. Consulte também a palavra-chave somente leitura. Por exemplo:

const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";

A partir de C# 10, as cadeias de caracteres interpoladas podem ser constantes, se todas as expressões usadas também forem cadeias de caracteres constantes. Esse recurso pode melhorar o código que cria cadeias de caracteres constantes:

const string Language = "C#";
const string Platform = ".NET";
const string Version = "10.0";
const string FullProductName = $"{Platform} - Language: {Language} Version: {Version}";

Observações

O tipo de declaração constante especifica o tipo de membros que a declaração introduz. O inicializador de uma constante local ou de um campo constante deve ser uma expressão constante que possa ser implicitamente convertida para o tipo de destino.

Uma expressão constante é uma expressão que pode ser totalmente avaliada em tempo de compilação. Portanto, os únicos valores possíveis para constantes de tipos de referência são cadeias de caracteres e uma referência nula.

A declaração constante pode declarar várias constantes, como:

public const double X = 1.0, Y = 2.0, Z = 3.0;

O static modificador não é permitido em uma declaração constante.

Uma constante pode participar de uma expressão constante, da seguinte maneira:

public const int C1 = 5;
public const int C2 = C1 + 100;

Nota

A palavra-chave readonly difere da const palavra-chave. Um const campo só pode ser inicializado na declaração do campo. Um readonly campo pode ser inicializado na declaração ou em um construtor. Portanto, readonly os campos podem ter valores diferentes dependendo do construtor usado. Além disso, embora um const campo seja uma constante de tempo de compilação, o readonly campo pode ser usado para constantes de tempo de execução, como nesta linha: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Exemplos

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()
    {
        var mC = new SampleClass(11, 22);
        Console.WriteLine($"x = {mC.x}, y = {mC.y}");
        Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
    }
}
/* Output
    x = 11, y = 22
    C1 = 5, C2 = 10
*/

O exemplo a seguir demonstra como declarar uma constante local:

public class SealedTest
{
    static void Main()
    {
        const int C = 707;
        Console.WriteLine($"My local constant = {C}");
    }
}
// Output: My local constant = 707

Especificação da linguagem C#

Para obter mais informações, consulte as seguintes seções da especificação da linguagem C#:

Consulte também