English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
Die folgende Tabelle listet die verfügbaren Präprozessoranweisungen in C# auf:
Präprozessoranweisungen | Beschreibung |
---|---|
#define | Es wird verwendet, um eine Reihe von Zeichen zu definieren, die ein Symbol bilden. |
#undef | Es wird verwendet, um ein Symbol abzudeklarieren. |
#if | Es wird verwendet, um zu testen, ob ein Symbol wahr ist. |
#else | Es wird verwendet, um komplexe bedingte Anweisungsanweisungen zu erstellen, zusammen mit #if. |
#elif | Es wird verwendet, um komplexe bedingte Anweisungsanweisungen zu erstellen. |
#endif | Definiert das Ende eines bedingten Anweisungsbeendigungssignals. |
#line | Es ermöglicht Ihnen, die Anzahl der Zeilen des Compilers zu ändern und optional den Dateinamen für Fehler und Warnungen auszugeben. |
#error | Ermöglicht es, einen Fehler von einer bestimmten Stelle im Code zu generieren. |
#warning | Ermöglicht es, eine Warnung von einer bestimmten Stelle im Code zu generieren. |
#region | Es ermöglicht es Ihnen, beim Verwenden der Outline-Funktion des Visual Studio Code Editors, einen erweiterbaren oder klappbaren Codeblock zu spezifizieren. |
#endregion | Kennzeichnet das Ende eines #region-Blocks. |
#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
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