Partager via


#if (référence C#)

Lorsque le compilateur C# rencontre une directive #if, éventuellement suivie d'une directive #endif, il compilera uniquement le code entre les directives si le symbole spécifié est défini. Contrairement à C et C++, vous ne pouvez pas assigner de valeur numérique à un symbole ; l'instruction #if est Boolean en C# et teste uniquement si le symbole a été défini ou non. Par exemple :

#define DEBUG
// ...
#if DEBUG
    Console.WriteLine("Debug version");
#endif

Vous pouvez utiliser les opérateurs == (égalité) ! = (inégalité) pour tester uniquement true ou false. True signifie que le symbole est défini. L'instruction #if DEBUG a la même signification que #if (DEBUG == true). Vous pouvez utiliser les opérateurs &&(et), || (ou), et ! (pas) pour évaluer si plusieurs symboles définis. Vous pouvez aussi grouper des symboles et des opérateurs à l'aide de parenthèses.

Notes

#if, ainsi que les directives#else, #elif, #endif, #define et #undef, vous permettent d'inclure ou d'exclure du code, en fonction de l'existence d'un ou plusieurs symboles. Cela peut s'avérer utile lorsque vous compilez du code pour une version Debug ou pour une configuration spécifique.

Une directive conditionnelle commençant par une directive #if doit se terminer explicitement par une directive #endif.

#define vous permet de définir un symbole. Si vous utilisez ce symbole comme expression passée à la directive #if, l'expression est évaluée true.

Vous pouvez également définir un symbole à l'aide de l'option de compilation /define. Vous pouvez annuler la définition d'un symbole à l'aide de #undef.

Un symbole que vous définissez à l'aide de /define ou de #define ne crée pas de conflit avec une variable du même nom. En conséquence, le nom d'une variable ne doit pas être passé à une directive de préprocesseur et un symbole peut être seulement évalué par une directive de préprocesseur.

La portée d'un symbole créé à l'aide de #define correspond au fichier dans lequel il a été défini.

Exemple

// preprocessor_if.cs
#define DEBUG 
#define MYTEST
using System;
public class MyClass 
{
    static void Main() 
    {
#if (DEBUG && !MYTEST)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
        Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
        Console.WriteLine("DEBUG and MYTEST are defined");
#else
        Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
    }
}
  

Voir aussi

Référence

Directives de préprocesseur C#

Concepts

Guide de programmation C#

Autres ressources

Référence C#