#define (Riferimenti per C#)#define (C# Reference)

Si usa #define per definire un simbolo.You use #define to define a symbol. Quando si usa il simbolo come espressione passata alla direttiva #if, l'espressione restituisce true, come illustrato nell'esempio seguente: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

OsservazioniRemarks

Nota

Non è possibile usare la direttiva #define per dichiarare valori costanti come in C e in C++.The #define directive cannot be used to declare constant values as is typically done in C and C++. Le costanti in C# possono essere definite come membri statici di una classe o di uno struct.Constants in C# are best defined as static members of a class or struct. Se sono presenti più costanti di questo tipo, per usarle può essere utile creare una classe di costanti separata.If you have several such constants, consider creating a separate "Constants" class to hold them.

Per specificare le condizioni per la compilazione è possibile usare simboli.Symbols can be used to specify conditions for compilation. È possibile eseguire il test del simbolo tramite #if o #elif.You can test for the symbol with either #if or #elif. È anche possibile usare ConditionalAttribute per eseguire una compilazione condizionale.You can also use the ConditionalAttribute to perform conditional compilation.

È possibile definire un simbolo ma non è possibile assegnare a questo un valore.You can define a symbol, but you cannot assign a value to a symbol. La direttiva #define deve essere inserita in un file prima di usare istruzioni che non siano anche direttive del preprocessore.The #define directive must appear in the file before you use any instructions that aren't also preprocessor directives.

Un simbolo può anche essere definito tramite l'opzione del compilatore -define.You can also define a symbol with the -define compiler option. Per rimuovere la definizione di un simbolo, è possibile usare #undef.You can undefine a symbol with #undef.

Un simbolo definito tramite -define o #define non provoca conflitti con una variabile avente lo stesso nome.A symbol that you define with -define or with #define does not conflict with a variable of the same name. Il nome di una variabile, infatti, non può essere passato a una direttiva del preprocessore e un simbolo può essere valutato solo da una direttiva del preprocessore.That is, a variable name should not be passed to a preprocessor directive and a symbol can only be evaluated by a preprocessor directive.

L'ambito di un simbolo creato tramite #define è il file in cui il simbolo è stato definito.The scope of a symbol that was created by using #define is the file in which the symbol was defined.

Come illustrato nell'esempio seguente, è necessario inserire direttive #define all'inizio del file.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.  

Per un esempio su come annullare la definizione di un simbolo, vedere #undef.For an example of how to undefine a symbol, see #undef.

Vedere ancheSee also