Latest web development tutorials

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

情報の前処理をコンパイルする実際の開始前に、コンパイラのプリプロセッサを指示します。

すべてのプリプロセッサディレクティブは、#で始まるされています。 そして、1行に、空白文字だけではプリプロセッサディレクティブの前に現れることができます。 プリプロセッサディレクティブは、ステートメントではありませんので、セミコロンではありません(;)終了。

C#コンパイラは、別のプリプロセッサを持っていない、しかし、命令が処理されるように独立したプリプロセッサを持ちたいです。 C#で、条件付きコンパイル作業のためのプリプロセッサディレクティブ。 CおよびC ++は、異なる命令を持っていない、彼らは、マクロを作成するために使用されていません。 プリプロセッサディレクティブは、その行の唯一の命令でなければなりません。

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

次の表は、C#のプリプロセッサディレクティブが利用可能である示しています。

预处理器指令描述
#define它用于定义一系列成为符号的字符。
#undef它用于取消定义符号。
#if它用于测试符号是否为真。
#else它用于创建复合条件指令,与 #if 一起使用。
#elif它用于创建复合条件指令。
#endif指定一个条件指令的结束。
#line它可以让您修改编译器的行数以及(可选地)输出错误和警告的文件名。
#error它允许从代码的指定位置生成一个错误。
#warning它允许从代码的指定位置生成一级警告。
#region它可以让您在使用 Visual Studio Code Editor 的大纲特性时,指定一个可展开或折叠的代码块。
#endregion它标识着 #region 块的结束。

#defineプリプロセッサ

#defineプリプロセッサ・ディレクティブは、シンボル定数を作成します。

#defineは、式がtrueを返すように記号を使用することにより#if指令式に渡されている、ようにあなたは、シンボルを定義することができます。 構文は次のとおりです。

#defineシンボル

次のプログラムは、この点を示しています。

#define PI 
システムを用いました。
名前空間PreprocessorDAppl
{
   クラスプログラム
   {
      静的な無効メイン(文字列[] args)
      {
         #if(PI)
            Console.WriteLineを(「PIが定義されています」)。
         #else
            Console.WriteLineを( "PIが定義されていません");
         #endifの
         Console.ReadKey()。
      }
   }
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

PIが定義されています

条件付き命令

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

条件付き命令構文:

#ifのシンボル[演算子記号] ...

ここで、シンボルは、試験されるシンボル名です。 また、trueとfalse使用することができ、または記号が否定演算子の前に配置されています。

オペレータシンボルは、演算子記号を評価するために使用されます。 演算子は、次の演算子のいずれかになります。

  • ==(平等)
  • !=(等しくありません)
  • &&(そして)
  • ||(OR)

また、グループのシンボルと演算子に括弧を使用することができます。 デバッグバージョンでの条件付き命令または指定されたコンフィギュレーションコンパイルされたコードをコンパイルします。#if指令で始まる条件付き命令は、#endifの命令終了するに表示されなければなりません。

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

#define DEBUG
#define VC_V10
システムを用いました。
パブリッククラスTestClassを
{
   公共の静的な無効メイン()
   {

      #if(DEBUG &&!VC_V10)
         Console.WriteLineを( "DEBUGが定義されています");
      #elifの(!DEBUG && VC_V10)
         Console.WriteLineを(「VC_V10が定義されています」)。
      #elifの(DEBUG && VC_V10)
         Console.WriteLineを( "DEBUGとVC_V10が定義されています");
      #else
         Console.WriteLineを( "DEBUGとVC_V10が定義されていません");
      #endifの
      Console.ReadKey()。
   }
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

DEBUGとVC_V10が定義されています