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

プリプロセッサとは

コンパイルの前に処理を行う機能。

プリプロセッサディレクティブは#defineなど#で始まる指示語。

コンパイルシンボル

デバッグビルドとリリースビルドで処理を分けたい場合などに使う。
コンパイルシンボルとは、#if , #elif #else #endifディレクティブと組み合わせて使うシンボル語のこと。
デフォルトでDEBUG(デバッグビルド)、RELEASE(リリースビルド)、TRACE(両方)のシンボルが用意されている。

デバッグビルド:デバッグに最適化された構成
リリースビルド:パフォーマンスに最適化された構成

独自にコンパイルシンボルを定義したい場合は#defineを使う。#defineはプログラムの先頭で、名前空間宣言当の他のキーワードの前に指定する必要がある。シンボルの定義を解除する場合は#undefを使う。
また、プロジェクトのプロパティ→ビルド や、プロジェクトファイルの<ProjectGroup>の<DefineConstants>で定義することもできる。

プロジェクトのプロパティ

デバッグのときのみ実行されるメソッドを定義する

以下のABC()はデバッグ時のみ実行される。

意図的にコンパイルエラー/警告を出力する

意図的にエラーや警告を出力するには#errorや#worningを使う。
#lineを使うと、指定した場所(行番号・ファイル名)でエラーが発生したように見せかけることができる。ファイル名は実際に存在するファイルでなくてもよい。
以下の5行目の例では、#lineから下のエラーの発生場所はtest.csファイルの100行目〜となる。

#error,#worning,#lineの使用例

エディターでグループを折りたたむ

#region~#endregionまでをエディタで折りたたむことができる。(対応エディタのみ)
ラベルを付けたい場合は「#region ラベル」と書く。折りたたんだ時にはラベルのみが表示される。

警告を無効にする

今日の英単語

diagnostics:診断

Conditional:条件付き

参考サイト
MCP 70-483 Programming in C# のお勉強 「3-4 アプリケーションをデバッグする」 – Qiita
プリプロセッサ ディレクティブ | C# プログラミング解説 (so-zou.jp)
C#8.0 #nullableディレクティブにおける注釈・警告コンテキストについて – やってみる (hatenablog.com)

参考書籍
Ian Griffiths著 プログラミングC#

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