プリプロセッサ

2022年9月4日

プリプロセッサとは、ソフトウェアの役割による分類の一つで、ある中心的な処理を行うプログラムに対して、その前処理(preprocess)を行うプログラムのこと

機能一覧

If属性

C#とは関係なく、コード自体が実行されるかどうかを定義します

サンプルコード

#define TEST
using System;
public class ThreadTimerTest
{
    public static void Main()
    {
#if TEST
        Console.WriteLine("Test1");
#else
        Console.WriteLine("Test2");
#endif
    }
}

defineありの結果

Test1

defineなしの結果

Test2

Conditional属性

特定のメソッドをメソッド自体がないかのように振る舞います
実行時、呼び出し元のコードからも記述が消えるイメージです

サンプルコード

#define TEST
using System;
// Diagnosticsのusingが必要
using System.Diagnostics;
public class ThreadTimerTest
{
    public static void Main()
    {
        // TESTの定義がないと(#define TESTがないと)実行もされません
        Show();
    }
    [Conditional("TEST")]
    static void Show()
    {
        Console.WriteLine("Hello World");
    }
}

defineありの結果

Hello World

defineなしの結果

何も表示されません

Unityの場合

defineの有効無効の全コードへの適用

Unityの場合、ここに宣言(名前だけ)を記述するとプロジェクト全体に反映させることもできます

C#,Unity

Posted by hidepon