Partager via


#if (Référence C#)

Mise à jour : novembre 2007

#if vous permet de commencer une directive conditionnelle, en testant un ou plusieurs symboles pour vérifier s'ils ont pour valeur true. S'ils ont la valeur true, le compilateur évalue tout le code entre la directive #if et la directive #endif la plus proche. Par exemple,

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

Vous pouvez utiliser les opérateurs == (égalité), != (inégalité), && (et) et || (ou) pour évaluer plusieurs symboles. 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 le code, en fonction de la condition d'un ou plusieurs symboles. Cela peut s'avérer particulièrement 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 VC_V7
using System;
public class MyClass 
{
    static void Main() 
    {
#if (DEBUG && !VC_V7)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
        Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
        Console.WriteLine("DEBUG and VC_V7 are defined");
#else
        Console.WriteLine("DEBUG and VC_V7 are not defined");
#endif
    }
}

DEBUG and VC_V7 are defined

Voir aussi

Concepts

Guide de programmation C#

Référence

Directives de préprocesseur C#

Autres ressources

Référence C#