Pergunta

Em C, eu poderia declarar uma diretiva do compilador da seguinte maneira:

#define MY_NUMBER 10

No entanto, em C#, eu só parece ser capaz de fazer isso:

#define MY_NUMBER

O que é obviamente inútil neste caso.

Isso está correto ou estou fazendo algo errado? Caso contrário, alguém pode sugerir uma maneira de fazer isso, em namespace ou no nível da solução? Eu pensei em talvez criar uma classe estática, mas isso parece estar exagerado por um valor.

Foi útil?

Solução

Sim, está correto.

Aqui está uma cotação da documentação do MSDN:

As diretivas de pré-processamento fornecem o Capacidade de pular condicionalmente seções de arquivos de origem, relatar erros e condições de aviso e delinear regiões distintas do código -fonte. O termo "diretrizes de pré-processamento" é usado apenas para consistência com as linguagens de programação C e C ++. Em C#, não há etapa de pré-processamento separada; As diretrizes de pré-processamento são processadas como parte da fase de análise lexical.

Portanto, você não pode realmente definir constantes do compilador, como em C e C ++.

Recursos relacionados:

Outras dicas

Muitas outras respostas sugerem usar um public const campo. Note no entanto que um public const será compilado em assemblies referenciando -o, forçando -o a recompilar não apenas a montagem em que está definido, mas também toda montagem referenciando -a se você mudar o valor do const.

Se você não tiver certeza de que o valor nunca terá que mudar, um public static readonly O campo é uma alternativa melhor.

Sim, você está correto. const e readonly são realmente suas únicas opções.

Você pode definir uma const ou uma leitura estática e, se quiser condicionalmente, pode envolvê -lo em uma diretiva #if

#if DEBUG
private const int MY_NUMBER = 10;
#else
private const int MY_NUMBER = 20;
#endif

Você também pode verificar as enumes, como

enum Numbers
{
    Nothing = 0,
    Dads = 5,
    My = 10,
    LittleJims = 25
}

Então, em vez do My_Number de C, você tem números.

Use public Const


ATÉ ONDE SEI,

C# não usa o pré-processador define para executar a substituição no código, portanto, você deve usar uma constante.

Isso deve fazer o truque:

public const int MY_NUMBER = 10;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top