#define (C# リファレンス)#define (C# Reference)

#define は、シンボルを定義するために使用します。You use #define to define a symbol. 次の例に示すように、定義したシンボルを式として #if ディレクティブに渡すと、式は true と評価されます。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

コメントRemarks

注意

#define ディレクティブを使用して、通常 C および C++ で行うように定数値を宣言することはできません。The #define directive cannot be used to declare constant values as is typically done in C and C++. C# の定数は、クラスまたは構造体の静的メンバーとして定義することができます。Constants in C# are best defined as static members of a class or struct. そのような定数がいくつかある場合は、それを保持するための "Constants" クラスを個別に作成することを検討してください。If you have several such constants, consider creating a separate "Constants" class to hold them.

シンボルを使用して、コンパイル条件を指定できます。Symbols can be used to specify conditions for compilation. シンボルは、#if または #elif で評価できます。You can test for the symbol with either #if or #elif. また、conditional 属性を使用して、条件付きコンパイルを実行することもできます。You can also use the conditional attribute to perform conditional compilation.

シンボルを定義することはできますが、シンボルに値は代入できません。You can define a symbol, but you cannot assign a value to a symbol. #define ディレクティブは、ファイル内で、プリプロセッサ ディレクティブではない他の命令よりも前に記述する必要があります。The #define directive must appear in the file before you use any instructions that aren't also preprocessor directives.

シンボルは、-define コンパイラ オプションでも定義できます。You can also define a symbol with the -define compiler option. #undef を使うと、シンボルを未定義状態にできます。You can undefine a symbol with #undef.

-define または #define で定義されたシンボルは、同じ名前の変数とは競合しません。A symbol that you define with -define or with #define does not conflict with a variable of the same name. 変数名をプリプロセッサ ディレクティブに渡すことはできません。シンボルはプリプロセッサ ディレクティブだけで評価されます。That is, a variable name should not be passed to a preprocessor directive and a symbol can only be evaluated by a preprocessor directive.

#define で定義されたシンボルのスコープは、そのシンボルが定義されたファイル内だけです。The scope of a symbol that was created by using #define is the file in which the symbol was defined.

次の例に示すように、#define ディレクティブは、ファイルの先頭で指定する必要があります。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.  

シンボルの定義を解除する方法の例については、「#undef」を参照してください。For an example of how to undefine a symbol, see #undef.

参照See Also

C# リファレンスC# Reference
C# プログラミング ガイドC# Programming Guide
C# プリプロセッサ ディレクティブC# Preprocessor Directives
constconst
方法 : トレースとデバッグを指定して条件付きコンパイルを実行するHow to: Compile Conditionally with Trace and Debug
#undef#undef
#if#if