#define (référence C#)#define (C# Reference)

Vous utilisez #define pour définir un symbole.You use #define to define a symbol. Quand vous utilisez le symbole sous forme d’expression passée à la directive #if, l’expression donne la valeur true, comme illustré dans l’exemple suivant :When you use the symbol as the expression that's passed to the #if directive, the expression will evaluate to true, as the following example shows:

#define DEBUG

NotesRemarks

Note

La directive #define ne peut pas être utilisée pour déclarer des valeurs constantes comme c’est le cas en général en C et C++.The #define directive cannot be used to declare constant values as is typically done in C and C++. Les constantes en C# sont définies plutôt comme des membres statiques d’une classe ou d’un struct.Constants in C# are best defined as static members of a class or struct. Si vous avez plusieurs constantes de ce type, créez une classe « Constantes » distincte pour les stocker.If you have several such constants, consider creating a separate "Constants" class to hold them.

Les symboles peuvent être utilisés pour spécifier des conditions de compilation.Symbols can be used to specify conditions for compilation. Vous pouvez tester le symbole avec #if ou #elif.You can test for the symbol with either #if or #elif. Vous pouvez également utiliser ConditionalAttribute pour effectuer une compilation conditionnelle.You can also use the ConditionalAttribute to perform conditional compilation.

Vous pouvez définir un symbole, mais vous ne pouvez pas attribuer de valeur à un symbole.You can define a symbol, but you cannot assign a value to a symbol. La directive #define doit apparaître dans le fichier avant l’utilisation d’instructions qui ne sont pas également des directives de préprocesseur.The #define directive must appear in the file before you use any instructions that aren't also preprocessor directives.

Vous pouvez aussi définir un symbole avec l’option du compilateur -define.You can also define a symbol with the -define compiler option. Vous pouvez annuler la définition d’un symbole avec #undef.You can undefine a symbol with #undef.

Un symbole que vous définissez avec -define ou #define n’est pas en conflit avec une variable du même nom.A symbol that you define with -define or with #define does not conflict with a variable of the same name. Autrement dit, un nom de variable ne doit pas être passé à une directive de préprocesseur et un symbole ne peut être évalué que par une directive de préprocesseur.That is, a variable name should not be passed to a preprocessor directive and a symbol can only be evaluated by a preprocessor directive.

La portée d’un symbole qui a été créé à l’aide de #define est le fichier dans lequel le symbole a été défini.The scope of a symbol that was created by using #define is the file in which the symbol was defined.

Comme le montre l’exemple suivant, vous devez placer les directives #define en haut du fichier.As the following example shows, you must put #define directives at the top of the file.

#define DEBUG  
//#define TRACE  
#undef TRACE  
  
using System;  
  
public class TestDefine  
{  
    static void Main()  
    {  
#if (DEBUG)  
        Console.WriteLine("Debugging is enabled.");  
#endif  
  
#if (TRACE)  
     Console.WriteLine("Tracing is enabled.");  
#endif  
    }  
}  
// Output:  
// Debugging is enabled.  

Pour obtenir un exemple montrant comment annuler la définition d’un symbole, consultez #undef.For an example of how to undefine a symbol, see #undef.

Voir aussiSee Also