C# チュートリアルlogin
C# チュートリアル
著者:php.cn  更新時間:2022-04-11 14:06:23

C# プリプロセッサ ディレクティブ



プリプロセッサ ディレクティブは、実際のコンパイルが開始される前に情報を前処理するようにコンパイラーに指示します。

すべてのプリプロセッサ ディレクティブは # で始まります。また、行内では、プリプロセッサ ディレクティブの前に空白文字のみを使用できます。プリプロセッサ ディレクティブはステートメントではないため、セミコロン (;) で終わりません。

C# コンパイラには別個のプリプロセッサがありませんが、命令は別個のプリプロセッサがあるかのように処理されます。 C# では、条件付きコンパイルで機能するためにプリプロセッサ ディレクティブが使用されます。 C および C++ ディレクティブとは異なり、マクロの作成には使用されません。プリプロセッサ ディレクティブは、行上の唯一のディレクティブである必要があります。

C# プリプロセッサ ディレクティブのリスト

次の表に、C# で使用できるプリプロセッサ ディレクティブを示します。 s 。

#undef シンボルの定義を解除するために使用されます。 #ifシンボルが真かどうかをテストするために使用されます。 #else #if と一緒に使用される複合条件命令の作成に使用されます。 #elif複合条件付き命令を作成するために使用されます。 #endif 条件ディレクティブの終了を指定します。 #line コンパイラーの行数と、(オプションで) エラーと警告が出力されるファイル名を変更できます。 #error コード内の指定された場所からエラーを生成できます。 #warning コード内の指定された場所からレベル 1 の警告を生成できます。 #region Visual Studio コード エディターのアウトライン機能を使用するときに、展開可能なコード ブロックまたは折りたたまれたコード ブロックを指定できます。 #endregion #region ブロックの終わりを示します。

#define preprocessor

#define preprocessor ディレクティブは、シンボリック定数を作成します。

#define を使用すると、 #if ディレクティブに渡される式としてシンボルを使用することにより、式が true を返すようにシンボルを定義できます。その構文は次のとおりです:

#define symbol

次のプログラムはこれを示しています:

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

上記のコードがコンパイルされて実行されると、次の結果が生成されます:

PI is defined

条件ディレクティブ

#if ディレクティブを使用して A を作成できます。条件付きディレクティブ。条件付き命令は、シンボルが true かどうかをテストするために使用されます。 true の場合、コンパイラは #if と次の命令の間のコードを実行します。

条件ディレクティブの構文:

#if symbol [operator symbol]...

ここで、symbolはテストされるシンボルの名前です。 true と false を使用したり、記号の前に否定演算子を配置したりすることもできます。

演算子シンボルは、シンボルを評価するために使用される演算子です。 can 演算子は、次の演算子のいずれかになります:

  • == (等価)

  • != (不等式)

  • && (および)

  • || (または)

括弧を使用して記号と演算子をグループ化することもできます。条件付きディレクティブは、デバッグ ビルドでコードをコンパイルするとき、または指定された構成をコンパイルするときに使用されます。 #if ディレクティブで始まる条件ディレクティブは、明示的に #endif ディレクティブで終わる必要があります。

次のプログラムは、条件付き命令の使用方法を示しています:

#define DEBUG
#define VC_V10
using System;
public class TestClass
{
   public static void Main()
   {

      #if (DEBUG && !VC_V10)
         Console.WriteLine("DEBUG is defined");
      #elif (!DEBUG && VC_V10)
         Console.WriteLine("VC_V10 is defined");
      #elif (DEBUG && VC_V10)
         Console.WriteLine("DEBUG and VC_V10 are defined");
      #else
         Console.WriteLine("DEBUG and VC_V10 are not defined");
      #endif
      Console.ReadKey();
   }
}

上記のコードがコンパイルされて実行されると、次の結果が生成されます:

DEBUG and VC_V10 are defined