C#プチリファレンス

プリプロセッサ

プリプロセッサを使うと、コンパイル方法によって処理を変えたり、
警告やエラーを定義したり、ソースを見やすくしたりすることができます。

【主要プリプロセッサ一覧】
種類プリプロセッサ
分岐系#if #else #elif #endif #define #undef
警告・エラー系#warning #error #line
ソース分類系#region #endregion

Debugビルドとそれ以外で処理を変更する

例)
#if DEBUG
    //デバッグビルド時の処理
    Console.WriteLine("DEBUGです");
#else
    //デバッグビルド時以外の処理
    Console.WriteLine("DEBUGではありません。");
#endif

シンボルの定義により処理を変更する(if~else)

例)シンボル「ABCDE」があるかどうかによって処理を変更する
#define ABCDE

#if ABCDE
    //シンボル「ABCDE」が定義されている時の処理
    Console.WriteLine("ABCDEがあります");
#else
    //シンボル「ABCDE」が定義されていない時の処理
    Console.WriteLine("ABCDEがありません");
#endif

シンボルの定義により処理を変更する(if~elseif~else)

例)シンボル「ABC01」「ABC02」があるかどうかによって処理を変更する
#define ABC01
#define ABC02

#if ABC01
    //シンボル「ABC01」が定義されている時の処理
    Console.WriteLine("ABC01 があります");
#elif ABC02
    //シンボル「ABC01」が定義されていなくて「ABC02」が定義されている時の処理
    Console.WriteLine("ABC02 があります");
#else
    //シンボル「ABC01」も「ABC02」も定義されていない時の処理
    Console.WriteLine("ABC01もABC02もありません");
#endif

シンボルをクリアする

例)シンボル「ABC01」を未定義にする
#undef ABC01

警告・例外を定義する

例)警告(Warning)を定義にする
#warning 警告です。
例)例外(Error)を定義にする
#error 例外です。

警告・例外の行番号を変更する

例)行番号を強制的に300行とする
#line 300
例)強制的に変更した行番号を元に戻す
#line default

ソースを分類する

#region ~ #endregion で囲うと、
その部分のソースを展開したり折りたたんだりすることができます。

例)
// region~endregion で囲う例

#region サンプルメソッド
public void SampleMethod()
{
  //処理
}
#endregion

#region を開いた状態
#regionを開いたところ

#region を閉じた状態
#regionを閉じたところ

ToTop