Condividi tramite


#if (Riferimenti per C#)

Aggiornamento: novembre 2007

#if consente di iniziare una direttiva condizionale, verificando uno o più simboli per controllare se restituiscono true. Se effettivamente restituiscono true, il compilatore valuterà tutto il codice compreso tra #if e la direttiva #endif più vicina. Ad esempio,

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

È possibile utilizzare gli operatori == (uguaglianza), != (disuguaglianza), && (and) e || (or) per valutare più simboli. È anche possibile raggruppare simboli e operatori tra parentesi.

Note

#if, insieme alle direttive #else, #elif, #endif, #define e #undef, consente di includere o escludere il codice in base alla condizione imposta da uno o più simboli, il che può essere particolarmente utile quando si compila del codice per la generazione in modalità debug o si esegue la compilazione per una configurazione specifica.

Una direttiva condizionale che inizia con #if deve terminare in modo esplicito con una direttiva #endif.

#define consente di definire un simbolo. In questo modo, utilizzando il simbolo come espressione passata alla direttiva #if, l'espressione restituirà true.

Un simbolo può anche essere definito tramite l'opzione del compilatore /define. Per rimuovere la definizione di un simbolo, è possibile utilizzare #undef.

Un simbolo definito tramite /define o #define non provoca conflitti con una variabile avente lo stesso nome. Il nome di una variabile, infatti, non può essere passato a una direttiva per il preprocessore e un simbolo può essere valutato solo da una direttiva per il preprocessore.

L'ambito di un simbolo creato con #define è il file in cui è stato definito.

Esempio

// 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

Vedere anche

Concetti

Guida per programmatori C#

Riferimenti

Direttive per il preprocessore C#

Altre risorse

Riferimenti per C#