#define (C#-Referenz)#define (C# Reference)

Mit #define wird ein Symbol definiert.You use #define to define a symbol. Wenn Sie das Symbol als Ausdruck verwenden, der an die #if-Anweisung übergeben wird, wird der Ausdruck als true ausgewertet, wie in folgendem Beispiel dargestellt: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

HinweiseRemarks

Hinweis

Die #define-Direktive kann nicht zur Deklaration konstanter Werte wie in C und C++ verwendet werden.The #define directive cannot be used to declare constant values as is typically done in C and C++. Definieren Sie Konstanten in C# als statische Member einer Klasse oder einer Struktur.Constants in C# are best defined as static members of a class or struct. Wenn Sie über mehrere solcher Konstanten verfügen, erwägen Sie, eine separate "Constants"-Klasse zu erstellen.If you have several such constants, consider creating a separate "Constants" class to hold them.

Symbole können verwendet werden, um Bedingungen für die Kompilierung anzugeben.Symbols can be used to specify conditions for compilation. Ein Symbol kann entweder mit #if oder mit #elif überprüft werden.You can test for the symbol with either #if or #elif. Für bedingte Kompilierung kann auch das conditional-Attribut verwendet werden.You can also use the conditional attribute to perform conditional compilation.

Ein Symbol kann zwar definiert werden, aber es kann ihm kein Wert zugewiesen werden.You can define a symbol, but you cannot assign a value to a symbol. Die #define-Direktive muss in einer Datei vor allen Anweisungen, bei denen es sich nicht um Präprozessordirektiven handelt, verwendet werden.The #define directive must appear in the file before you use any instructions that aren't also preprocessor directives.

Ein Symbol kann auch mit der Compileroption /define definiert werden.You can also define a symbol with the /define compiler option. Die Definition eines Symbols kann mit #undef aufgehoben werden.You can undefine a symbol with #undef.

Zwischen einem Symbol, das mit /define oder mit #define definiert wird, und einer Variablen mit dem gleichen Namen kommt es zu keinem Konflikt.A symbol that you define with /define or with #define does not conflict with a variable of the same name. Das bedeutet, dass ein Variablenname nicht an eine Präprozessordirektive übergeben werden sollte und ein Symbol nur von einer Präprozessordirektive ausgewertet werden kann.That is, a variable name should not be passed to a preprocessor directive and a symbol can only be evaluated by a preprocessor directive.

Bei dem Gültigkeitsbereich eines mit #define erstellten Symbols handelt es sich um die Datei, in der es definiert wurde.The scope of a symbol that was created by using #define is the file in which the symbol was defined.

Wie im folgenden Beispiel dargestellt, müssen Sie die #define-Direktive am Anfang der Datei eingeben.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.  

Ein Beispiel dafür, wie eine Symboldefinition aufgehoben wird, finden Sie unter #undef.For an example of how to undefine a symbol, see #undef.

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
C#-PräprozessoranweisungenC# Preprocessor Directives
constconst
Vorgehensweise: Bedingtes Kompilieren mit Ablaufverfolgung und DebuggenHow to: Compile Conditionally with Trace and Debug
#undef#undef
#if#if