120 votes

#ifdef en C#

Je voudrais faire le ci-dessous, mais en C# au lieu de C++

#ifdef _DEBUG
bool bypassCheck=TRUE_OR_FALSE;//i will decide depending on what i am debugging
#else
bool bypassCheck = false; //NEVER bypass it
#endif

164voto

heavyd Points 8845
#if DEBUG
bool bypassCheck=TRUE_OR_FALSE;//i will decide depending on what i am debugging
#else
bool bypassCheck = false; //NEVER bypass it
#endif

Assurez-vous que vous avez coché la case pour définir DEBUG vérifiée dans votre construire des propriétés.

54voto

Pavel Nikolov Points 3595

Je vous recommande de vous à l'aide de l' Attribut Conditionnel!

Mise à jour: 3.5 ans plus tard

Vous pouvez utiliser #if d'exclure certains de la méthode de compilation, mais si vous le faites de cette façon, tout ce que vous avez à exclure de la compilation de tous les morceaux de code qui appel cette méthode (parfois, vous pouvez charger des classes au moment de l'exécution et vous ne trouvez pas l'appelant à "Trouver toutes les références"). Sinon, il y aura des erreurs.

Si vous utiliser la compilation conditionnelle d'autre part, vous pouvez toujours laisser tous les morceaux de code qui appel la méthode. Tous les paramètres peuvent encore être validé par le compilateur. La méthode ne sera pas appelé lors de l'exécution. Je pense que c'est pour mieux cacher la méthode de la juste une fois et ne pas avoir à supprimer tout le code qui l'appelle ainsi. Vous n'êtes pas autorisé à utiliser le conditionnel attribut sur les méthodes qui valeur de retour - uniquement sur les méthodes void. Mais je ne pense pas que c'est une grosse limitation, car si vous utilisez #if avec une méthode qui retourne une valeur que vous avez à cacher tous les morceaux de code qui l'appelle.

Voici un exemple:


 // appel de Class1.ConditionalMethod() sera ignorée lors de l'exécution 
 // à moins que le DÉBOGAGE constante est définie


 en utilisant le Système.Diagnostics;
 classe Class1 
{
[Conditionnel("DEBUG")]
 public static void ConditionalMethod() {
 Console.WriteLine("Exécuté Class1.ConditionalMethod");
}
}

Résumé:

Je voudrais utiliser #ifdef en C++, mais avec C#/VB je voudrais utiliser attribut Conditionnel. De cette façon, vous cacher la définition de la méthode sans avoir à cacher les morceaux de code qui l'appelle. Le code d'appel est toujours validée par le compilateur, la méthode n'est pas appelée au moment de l'exécution.

43voto

Fredrik Mörk Points 85694

#if sera votre nouvel ami, je pense.

Si vous souhaitez définir vos propres symboles de la compilation, vous pouvez le faire dans les propriétés du projet (sur l'onglet Construire; "symboles de compilation Conditionnelle").

1voto

Karl T. Points 414

C# possède un préprocesseur. Il fonctionne un peu différemment que de C++ et C.

Voici un MSDN liens - la section sur tous les directives de préprocesseur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X