Question

En C, je pouvais déclarer une directive du compilateur comme suit:

#define MY_NUMBER 10

Cependant, en C #, je parais que pour pouvoir faire ceci:

#define MY_NUMBER

Ce qui est évidemment inutile dans ce cas.

Est-ce exact, ou que je fais quelque chose de mal? Sinon, quelqu'un peut-il suggérer une façon de le faire, que ce soit au niveau de l'espace de noms ou solution? Je pensais que peut-être de créer une classe statique, mais qui semble être surpuissant pour une valeur.

Était-ce utile?

La solution

Oui, il est correct.

Voici une citation de la documentation MSDN:

  

Les directives de prétraitement fournissent   la capacité pour sauter certaines conditions   sections de fichiers source, à rapport   conditions d'erreur et d'avertissement, et   délimitation des régions distinctes de la source   code . Le terme « pré-traitement   directives » est utilisé uniquement pour   cohérence avec le C et C ++   langages de programmation. En C #, il y a   aucune étape de pré-traitement séparée;   directives de prétraitement sont   traitées dans le cadre de la lexical   la phase d'analyse.

Vous ne pouvez pas vraiment définir des constantes compilateur, comme en C et C ++.

Ressources connexes:

Autres conseils

Beaucoup des autres réponses vous suggérons d'utiliser un champ de public const. Notez cependant qu'un public const sera compilé dans des ensembles de référencement, vous forçant à recompiler non seulement l'assemblage, il est défini dans, mais aussi tous les référencement assemblée si jamais vous changez la valeur du const.

Si vous n'êtes pas certain que la valeur ne sera jamais à changer, un champ de public static readonly est une meilleure alternative.

Oui, vous avez raison. const et readonly sont vraiment vos seules options.

Vous pouvez définir un const ou statique en lecture seule, et si vous le voulez conditionnellement vous pouvez envelopper dans une directive #if

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

Vous aimerez également vérifier énumérations, comme

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

Ainsi, au lieu de MY_NUMBER de C, vous avez Numbers.My.

Utilisation du public const


AFAIK,

C # n'utilise pas définit pré-processeur pour effectuer le remplacement dans le code, de sorte que vous devez utiliser une constante.

Cela devrait faire l'affaire:

public const int MY_NUMBER = 10;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top