Constantes (Guia de Programação em C#)
As constantes são valores imutáveis que são conhecidos em tempo de compilação e não mudam durante a vida útil do programa. As constantes são declaradas com o modificador const . Somente os tipos internos do C# podem ser declarados como const
. Constantes de tipo de referência diferentes só String podem ser inicializadas com um valor nulo . Os tipos definidos pelo usuário, incluindo classes, structs e arrays, não podem ser const
. Use o modificador somente leitura para criar uma classe, struct ou matriz que é inicializada uma vez em tempo de execução (por exemplo, em um construtor) e depois disso não pode ser alterada.
C# não suporta const
métodos, propriedades ou eventos.
O tipo enum 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 à medida que 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 nem 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 linguagem intermediária (IL) que ele produz. Como não há nenhum endereço variável associado a uma constante em tempo de execução, const
os campos não podem ser passados por referência e não podem aparecer como um valor L em uma expressão.
Nota
Tenha cuidado ao se referir 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 manterá o valor literal antigo até que ele seja recompilado em relação à 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 usada para inicializar uma constante pode se referir a outra constante se 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 públicas, privadas, protegidas, internas, protegidas internas ou privadas. 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 estáticos porque o valor da constante é o mesmo para todas as instâncias do tipo. Você não usa a static
palavra-chave para declará-los. As expressões que não estão na classe que define a constante devem usar o nome da classe, um ponto 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 do C#.