Constantes (Guia de Programação em C#)

As constantes são valores imutáveis que são conhecidos no tempo de compilação e não são alterados durante a vida útil do programa. Constantes são declaradas com o modificador const. Apenas os tipos C# internos podem ser declarados como const. As constantes de tipo de referência diferentes de String só podem ser inicializadas com um valor nulo. Tipos definidos pelo usuário, incluindo classes, struct e matrizes, não podem ser const. Use o modificador readonly para criar uma classe, um struct ou uma matriz que sejam inicializados uma vez em tempo de execução (por exemplo, em um construtor) e não possam mais ser alterados depois disso.

O C# não dá suporte aos métodos const, propriedades ou eventos.

O tipo de enumeração permite que você defina constantes nomeadas para tipos internos integrais (por exemplo int, uint, long e assim por diante). Para obter mais informações, consulte enum.

As constantes devem ser inicializadas conforme elas são declaradas. Por exemplo:

class Calendar1
{
    public const int Months = 12;
}

Neste exemplo, a constante Months sempre é 12 e não pode ser alterada até mesmo pela própria classe. Na verdade, quando o compilador encontra um identificador constante no código-fonte C# (por exemplo, Months), ele substitui o valor literal diretamente no código de IL (linguagem intermediária) que ele produz. Como não há nenhum endereço variável associado a uma constante em tempo de execução, os campos const não podem ser passados por referência e não podem aparecer como um l-value em uma expressão.

Observação

Tenha cuidado ao fazer referência a valores constantes definidos em outro código como DLLs. Se uma nova versão da DLL definir um novo valor para a constante, seu programa ainda conterá o valor literal antigo até que ele seja recompilado com a nova versão.

Várias constantes do mesmo tipo podem ser declaradas ao mesmo tempo, por exemplo:

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

A expressão que é usada para inicializar uma constante poderá fazer referência a outra constante se ela não criar uma referência circular. Por exemplo:

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;
}

As constantes podem ser marcadas como public, private, protected, internal, protected internal ou private protected. Esses modificadores de acesso definem como os usuários da classe podem acessar a constante. Para obter mais informações, consulte Modificadores de Acesso.

As constantes são acessadas como se fossem campos static porque o valor da constante é o mesmo para todas as instâncias do tipo. Você não usa a palavra-chave static para declará-las. As expressões que não estão na classe que define a constante devem usar o nome de classe, um período e o nome da constante para acessar a constante. Por exemplo:

int birthstones = Calendar.Months;

Especificação da Linguagem C#

Para obter mais informações, consulte a Especificação da linguagem C#. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Confira também