【C#】条件付きコンパイルの活用法(開発中だけデバッグ情報を出力など)

C#

C#のプロジェクトのプロパティのビルドタブに、条件付きコンパイルの欄があります。実は、この条件付きコンパイルは、C#を使用したアプリケーション開発において非常に便利な機能です。

本記事では、条件付きコンパイルの基本的な使い方と、具体的な用途について紹介します。

条件付きコンパイルとは

条件付きコンパイルとは、プログラムをコンパイルする際に、特定のコード部分をコンパイル範囲に含めたり除外したりする技術です。例えば、デバッグ情報を出力するコードを開発中だけ有効にしたり、特定のユーザのみアプリケーションを分けて特別な機能を提供する場合などに、条件付きコンパイルを使用します。

サンプルコード

以下は、条件付きコンパイルの定数 SAMPLE の定義有無による条件付きコンパイルの例です。定数 SAMPLE が定義されている場合、コンソールに「SAMPLEは定義されています」と表示します。定数 SAMPLE が未定義の場合は、「SAMPLEは未定義です」と表示します。

using System;

class Program
{
    static void Main()
    {
#if SAMPLE
        Console.WriteLine("SAMPLEは定義されています");
#else
        Console.WriteLine("SAMPLEは未定義です");
#endif
    }
}

SAMPLEを定義した場合

プロジェクトのプロパティで、条件付きコンパイルのシンボルを定義できます。以下のように”SAMPLE”を定義した場合のサンプルコードの動作を確認します。

実行結果:#if SAMPLE が真の場合の処理がコンパイルされました。

SAMPLEは定義されています

SAMPLEを定義しない場合

次に、プロジェクトのプロパティで、条件付きコンパイルのシンボルを空欄にした場合のサンプルコードの動作を確認します。

実行結果:#if SAMPLE が偽の場合の処理(#else側の処理)がコンパイルされました。

SAMPLEは未定義です

具体的な用途

ここでは、条件付きコンパイルの具体的な用途をいくつか紹介します。

開発中だけデバッグ情報を出力する

アプリケーションの開発中、通常は構成をDebugとしていると思います。

上記の設定をしている場合、Visual Studioは親切に、条件付きコンパイル用に DEBUG というシンボルを定義してくれています。

このため、自分で条件付きコンパイル欄に DEBUG と書かなくても、#if DEBUG と書く事により、デバッグ用コードを記述できます。

using System;

class Program
{
    static void Main()
    {
#if DEBUG
        Console.WriteLine("デバッグ用のログファイルの出力を開始します。");
#endif
        Console.WriteLine("プログラムの実行中...");

#if DEBUG
        // デバッグ用のログファイルを出力する処理をここに記述
#endif
    }
}

Debugモードで実行の場合

デバッグ用のログファイルの出力を開始します。
プログラムの実行中...

Releaseモードで実行の場合

プログラムの実行中...

特定のユーザ向けに機能を有効化する

新しい機能を段階的に導入する場合や、特定のユーザにのみ機能を提供する場合にも、条件付きコンパイルを使用できます。

たとえば、プレミアムユーザ用と通常ユーザ用で、提供するアプリケーションを分けてビルドする場合、以下のように条件付きコンパイルのシンボルを定義します。

ソースコード上では、#if PREMIUM_USER と書く事により、コンパイルする処理を選択できます。

using System;

class Program
{
    static void Main()
    {
#if PREMIUM_USER
        Console.WriteLine("プレミアム機能にアクセスできます。");
#else
        Console.WriteLine("基本機能のみ利用可能です。");
#endif
    }
}

実行結果

プレミアム機能にアクセスできます。

デバッグ用の文字列を表示したい場合

デバッグ用の文字列を画面に表示したい、という場合には、条件付きコンパイルよりも手軽に利用できる Debug.WriteLine メソッドを使用する方法もあります。詳細は、以下の記事をご覧ください。

まとめ

本記事では、条件付きコンパイルの基本的な使い方と、具体的な用途について紹介しました。条件付きコンパイルは、デバッグコードの有効化や、機能の有無の制御など、さまざまな場面で活用が可能です。

タイトルとURLをコピーしました