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

C# Präprozessoranweisung

Präprozessoranweisungen leiten den Compiler an, vor dem eigentlichen Kompilieren Informationen vorzupreprocessieren.

Alle Präprozessoranweisungen beginnen mit # und können nur Leerzeichen vor der Präprozessoranweisung auf einer Zeile stehen. Präprozessoranweisungen sind keine Anweisungen, daher enden sie nicht mit einem Semikolon (;).

Der C# Compiler hat keinen separaten Präprozessor, aber die Anweisungen werden wie hätte es einen separaten Präprozessor behandelt. In C# werden Präprozessoranweisungen verwendet, um im bedingten Kompilieren zu wirken. Im Gegensatz zu C und C++ Der Unterschied ist, dass sie nicht dazu dienen, Makros zu erstellen. Eine Präprozessoranweisung muss die einzige Anweisung auf einer Zeile sein.

Liste der C# Präprozessoranweisungen

Die folgende Tabelle listet die verfügbaren Präprozessoranweisungen in C# auf:

PräprozessoranweisungenBeschreibung
#defineEs wird verwendet, um eine Reihe von Zeichen zu definieren, die ein Symbol bilden.
#undefEs wird verwendet, um ein Symbol abzudeklarieren.
#ifEs wird verwendet, um zu testen, ob ein Symbol wahr ist.
#elseEs wird verwendet, um komplexe bedingte Anweisungsanweisungen zu erstellen, zusammen mit #if.
#elifEs wird verwendet, um komplexe bedingte Anweisungsanweisungen zu erstellen.
#endifDefiniert das Ende eines bedingten Anweisungsbeendigungssignals.
#lineEs ermöglicht Ihnen, die Anzahl der Zeilen des Compilers zu ändern und optional den Dateinamen für Fehler und Warnungen auszugeben.
#errorErmöglicht es, einen Fehler von einer bestimmten Stelle im Code zu generieren.
#warningErmöglicht es, eine Warnung von einer bestimmten Stelle im Code zu generieren.
#regionEs ermöglicht es Ihnen, beim Verwenden der Outline-Funktion des Visual Studio Code Editors, einen erweiterbaren oder klappbaren Codeblock zu spezifizieren.
#endregionKennzeichnet das Ende eines #region-Blocks.

#define Präprozessor

#define Präprozessoranweisungen erstellen Symbolkonstanten.

#define ermöglicht es Ihnen, ein Symbol zu definieren, so dass der Ausdruck, der durch das Symbol an das #if-Kommando übergeben wird, wahr zurückgibt. Seine Syntax ist wie folgt:

#define symbol

Das folgende Programm illustriert dies:

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

Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:

PI ist definiert

Bedingungsausdruck

Sie können das #if-Kommando verwenden, um einen Bedingungsausdruck zu erstellen. Bedingungsausdrücke werden verwendet, um zu testen, ob ein Symbol wahr ist. Wenn es wahr ist, führt der Compiler den Code zwischen #if und der nächsten Anweisung aus.

Syntax der Bedingungsausdrücke:

#if symbol [Operator symbol]...

dabei:symbol ist der Name des zu testenden Symbols. Sie können auch true und false verwenden oder einen Negationsoperator vor dem Symbol platzieren.

Gängige Operatoren sind:

  • == (gleich)

  • != (ungleich)

  • && (und)

  • || (oder)

Sie können auch Klammern verwenden, um Symbole und Operatoren zu gruppieren. Bedingungsausdrücke werden verwendet, um Code beim Kompilieren der Debug-Version oder einer bestimmten Konfiguration zu kompilieren. Ein #if Bedingungsausdrücke beginnen mit einer #endif Anweisung beendet.

Das folgende Programm zeigt die Verwendung von Bedingungsausdrücken:

#define DEBUG
#define VC_V10
using System;
public class TestClass
{
   public static void Main()
   {
      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG ist definiert");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V}}10 sind definiert");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG und VC_V10 sind definiert");
      #else
         Console.WriteLine("DEBUG und VC_V10 sind nicht definiert");
      #endif
      Console.ReadKey();
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt er das folgende Ergebnis:

DEBUG und VC_V10 sind definiert