English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Istruzione pre-processore di C#

Le istruzioni del preprocessore istruiscono il compilatore a preprocessare le informazioni prima dell'inizio effettivo della compilazione.

Tutte le istruzioni del preprocessore iniziano con #. E su una riga, solo i caratteri di spazi bianchi possono apparire prima dell'istruzione del preprocessore. Le istruzioni del preprocessore non sono istruzioni, quindi non si concludono con un punto e virgola (;).

Il compilatore di C# non ha un preprocessore separato, ma le istruzioni vengono trattate come se ci fosse un preprocessore separato. In C#, le istruzioni del preprocessore vengono utilizzate per l'elaborazione condizionale. A differenza di C e C++, non vengono utilizzate per creare macro. Un'istruzione del preprocessore deve essere l'unica istruzione sulla riga.

Elenco delle istruzioni del preprocessore di C#

La tabella seguente elenca le istruzioni del preprocessore disponibili in C#:

Istruzioni del preprocessoreDescrizione
#defineUsato per definire una serie di caratteri che diventano un simbolo.
#undefUsato per cancellare la definizione di un simbolo.
#ifUsato per testare se un simbolo è vero.
#elseUsato per creare comandi condizionali complessi, insieme a #if.
#elifUsato per creare comandi condizionali complessi.
#endifSpecificare la fine di un comando condizionale.
#linePermette di modificare il numero di riga del compilatore e (opzionalmente) il nome del file di output degli errori e delle avvertenze.
#errorPermette di generare un errore da una posizione specifica del codice.
#warningPermette di generare un avviso di livello 1 dalla posizione specificata nel codice.
#regionTi permette di specificare un blocco di codice espandibile o ripiegabile quando utilizzi le caratteristiche dell'anteprima della sintassi di Visual Studio Code Editor.
#endregionIdentifica la fine del blocco #region.

#define preprocessore

#define istruzioni del preprocessore creano costanti simbolo.

#define permette di definire un simbolo, in modo che l'espressione passata all'istruzione #if utilizzi il simbolo come valore. La sua sintassi è la seguente:

#define symbol

Il seguente programma illustra questo punto:

#define PI 
using System;
namespace PreprocessorDAppl
{
   class Program
   {
      static void Main(string[] args)
      {
         #if (PI)
            Console.WriteLine("PI è definito");
         #else
            Console.WriteLine("PI non è definito");
         #endif
         Console.ReadKey();
      }
   }
}

Quando il codice sopra viene compilato ed eseguito, produrrà i seguenti risultati:

PI è definito

Istruzioni condizionali

Puoi usare l'istruzione #if per creare un'istruzione condizionale. Le istruzioni condizionali vengono utilizzate per testare se un simbolo è vero. Se è vero, il compilatore eseguirà il codice tra #if e l'istruzione successiva.

Sintassi delle istruzioni condizionali:

#if symbol [operatore simbolo]...

dove:simbolo è il nome del simbolo da testare. Puoi anche usare true e false, o posizionare l'operatore di negazione davanti al simbolo.

Operatori comuni includono:

  • == (uguale a)

  • != (diverso da)

  • && (e)

  • || (o)

Puoi anche raggruppare simboli e operatori tra parentesi. Le istruzioni condizionali vengono utilizzate per compilare il codice in base alla versione di debug o alla configurazione specificata. Un #if Le istruzioni condizionali iniziano con un #endif Fine istruzione.

Il seguente programma dimostra l'uso delle istruzioni condizionali:

#define DEBUG
#define VC_V10
using System;
public class TestClass
{
   public static void Main()
   {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG è definito");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 è definito");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG e VC_V10 sono definiti");
      #else
         Console.WriteLine("DEBUG e VC_V10 non sono definiti");
      #endif
      Console.ReadKey();
   }
}

Quando il codice sopra viene compilato ed eseguito, produrrà i seguenti risultati:

DEBUG e VC_V10 sono definiti