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

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.Constants are immutable values which are known at compile time and do not change for the life of the program. Constantes são declaradas com o modificador const.Constants are declared with the const modifier. Apenas os tipos C# internos (excluindo System.Object) podem ser declarados como const.Only the C# built-in types (excluding System.Object) may be declared as const. Para obter uma lista dos tipos internos, consulte Tabela de tipos internos.For a list of the built-in types, see Built-In Types Table. Tipos definidos pelo usuário, incluindo classes, struct e matrizes, não podem ser const.User-defined types, including classes, structs, and arrays, cannot be const. Use o modificador readonly para criar uma classe, struct ou matriz que é inicializada uma vez em tempo de execução (por exemplo, em um construtor) e, assim, não pode ser alterada.Use the readonly modifier to create a class, struct, or array that is initialized one time at runtime (for example in a constructor) and thereafter cannot be changed.

O C# não dá suporte aos métodos const, propriedades ou eventos.C# does not support const methods, properties, or events.

O tipo de enumeração permite que você defina constantes nomeadas para tipos internos integrais (por exemplo int, uint, long e assim por diante).The enum type enables you to define named constants for integral built-in types (for example int, uint, long, and so on). Para obter mais informações, consulte enum.For more information, see enum.

As constantes devem ser inicializadas conforme elas são declaradas.Constants must be initialized as they are declared. Por exemplo:For example:

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.In this example, the constant months is always 12, and it cannot be changed even by the class itself. 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.In fact, when the compiler encounters a constant identifier in C# source code (for example, months), it substitutes the literal value directly into the intermediate language (IL) code that it produces. 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.Because there is no variable address associated with a constant at run time, const fields cannot be passed by reference and cannot appear as an l-value in an expression.

Observação

Tenha cuidado ao fazer referência a valores constantes definidos em outro código como DLLs.Use caution when you refer to constant values defined in other code such as 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.If a new version of the DLL defines a new value for the constant, your program will still hold the old literal value until it is recompiled against the new version.

Várias constantes do mesmo tipo podem ser declaradas ao mesmo tempo, por exemplo:Multiple constants of the same type can be declared at the same time, for example:

class Calendar2
{
    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.The expression that is used to initialize a constant can refer to another constant if it does not create a circular reference. Por exemplo:For example:

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

As constantes podem ser marcadas como public, private, protected, internal, protected internal ou private protected.Constants can be marked as public, private, protected, internal, protected internal or private protected. Esses modificadores de acesso definem como os usuários da classe podem acessar a constante.These access modifiers define how users of the class can access the constant. Para obter mais informações, consulte Modificadores de Acesso.For more information, see Access Modifiers.

As constantes são acessadas como se fossem campos static porque o valor da constante é o mesmo para todas as instâncias do tipo.Constants are accessed as if they were static fields because the value of the constant is the same for all instances of the type. Você não usa a palavra-chave static para declará-las.You do not use the static keyword to declare them. 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.Expressions that are not in the class that defines the constant must use the class name, a period, and the name of the constant to access the constant. Por exemplo:For example:

int birthstones = Calendar.months;

Especificação da Linguagem C#C# Language Specification

Para obter mais informações, consulte a Especificação da linguagem C#.For more information, see the C# Language Specification. A especificação da linguagem é a fonte definitiva para a sintaxe e o uso de C#.The language specification is the definitive source for C# syntax and usage.

Consulte tambémSee Also

Guia de Programação em C#C# Programming Guide
Classes e StructsClasses and Structs
PropriedadesProperties
TiposTypes
readonlyreadonly
Immutability in C# Part One: Kinds of Immutability (Imutabilidade no C#, parte um: tipos de imutabilidade)Immutability in C# Part One: Kinds of Immutability