3種類のコメント

コメントとは何か

コメントはソースコードに追記する説明文で、開発者がプログラムのロジックを理解するために使用します。実行可能なコードではないため、コンパイラはコンパイル時にコメント部分を完全に無視します。

バグ調査にも活用できます。不具合が発生して原因箇所が特定できない場合、怪しいコードをコメントアウトすることで、該当箇所が実行されなくなり、段階的に問題の発生源を切り分けられます。

コメントの役割は、学生時代に教科書に書き込む補足メモと同じで、本文の内容を把握しやすくする補足情報という位置づけです。

コメントの種類

コメント種別開始記号終了記号基本ルール
1行コメント Single-line//行末記号//より後の同一行全体が無視され、現在の行にのみ適用
ブロックコメント Delimited/**/複数行または行内の一部コードをまとめて隠せるが、入れ子にできない
ドキュメントコメント Documentation///行末XMLタグを埋め込め、プロジェクトのAPIリファレンスを自動生成する用途

1. 1行コメント //

  1. //から現在の行の最後までの文字列がすべてコンパイラに無視される;
  2. 行の先頭に記述するか、処理コードの後ろに追記可能;
  3. 入れ子の制限がなく、/* */ブロックコメントと構文衝突を起こさない。
// 行先頭の1行コメント:数値変数を定義
int num = 10; // コード後ろの1行コメント:数値10を格納
// int temp = 99; // 全行コメントアウト:デバッグ用、コードを削除せず一時的に無効化、後から簡単に復元可能Code language: JavaScript (javascript)

2. ブロックコメント /* */

  1. 開始・終了記号がペアで使用され、/**/の間の内容が全て無視される;
  2. 複数行にまたがる記述と、行内の一部コードを遮断する両方に対応;
  3. ブロックコメントの入れ子は禁止。コンパイラは最初に出現した*/でコメントを終了させ、残った孤立した*/が構文エラーを引き起こす。

記述例

/*
複数行ブロックコメントのサンプル
コンパイラは中身をすべて読み飛ばす
何行でも自由に説明文を記載可能
*/
string str = "テスト文字列";Code language: JavaScript (javascript)
/*
Multi-line delimited comment example
All content here is ignored by the compiler
Text can span any number of lines
wellcome to foxdevelop.com
*/
string greet = "wellcome to foxdevelop.com";
Console.WriteLine(greet);Code language: JavaScript (javascript)

入れ子にするとエラーが発生する

ブロックコメント内部に新たなブロック記号を書くと、最後の終了記号に対応する開始記号が存在しなくなり、コンパイルに失敗します。

行内部分コメント

コードの一部だけを無効化する記法。下記例では変数aがコメントで遮断されています。

int /*a,*/ b; 
// int b; と同じ動作:中間の「a,」がコメントで除外されるCode language: JavaScript (javascript)
入れ子不可なブロックコメント例

コンパイルエラーとなる

/* 外側コメント開始
    /* 内側入れ子記号(単なる文字列として扱われ無効) */
// 上の最初の*/で外側コメントが終了、下の*/に対応する開始記号がないため構文エラー
*/Code language: JavaScript (javascript)
//内の/*はブロックコメントと認識されない

ブロックコメント記号自体が1行コメントの一部となり、機能しません。

// これは1行コメント /* ここの/*は普通の文字、ブロックコメントは起動しない
int x = 5;
/* ブロックコメント開始 */ // ブロックはここで終了、後ろの//は通常通り動作Code language: JavaScript (javascript)

3. ドキュメントコメント ///

  1. 1行コメントに似た表記で、スラッシュ3つ///で記述;
  2. XMLタグを埋め込め、IDEやツールが読み取ってAPIドキュメントを自動作成;
  3. クラス・メソッド・プロパティの上部に記述し、公開インターフェースの説明に使用。
/// <summary>
/// アプリケーションのエントリーポイントとなるメインクラス
/// </summary>
class Program
{
    /// <summary>
    /// プログラム実行開始メソッド
    /// </summary>
    /// <param name="args">コマンドライン引数配列</param>
    static void Main(string[] args)
    {

    }
}Code language: JavaScript (javascript)

まとめ

  1. ブロックコメント/* */入れ子不可、最初の*/で即時終了;
  2. //1行コメントは同一行のみ有効で複数行にまたがらない。内部の/*は通常文字扱い;
  3. C#の1行・ブロックコメント構文はC/C++と完全に同一;
  4. コメント作成の基本方針:コードの字面だけを繰り返さず、業務的な目的・設計方針を記載し保守性を高める。変数名をただ写すだけのコメントは価値がない。
  5. 短い説明文・一時的な1行無効化 → //
  6. 複数行まとめて無効化・行内一部遮断 → /* */
  7. クラス/メソッドのインターフェース説明・ドキュメント自動生成 → ///

※ ドキュメントファイルの生成方法

下記は参考情報です。ドキュメントコメントは大規模開発プロジェクトで活用されるため、初心者段階では存在だけ理解すれば大丈夫です。

Visual Studio 操作手順
  1. プロジェクトを右クリック → プロパティビルド(Build)
  2. チェックボックスにチェック:Generate XML documentation file(XMLドキュメントファイルを生成)
  3. 既定出力先:bin\Debug\プロジェクト名.xml、任意のパスに変更可能;
  4. All Configurations(すべての構成)にチェックを入れ、Debug/Release両方で出力;
  5. プロジェクトをリビルドすると、フォルダ内に完全なXMLコメントファイルが作成される。
.NET CLI コマンドライン設定(VS未使用時)

プロジェクトの .csproj ファイルを編集し、以下のノードを追加します:

&lt;PropertyGroup&gt;
  &lt;GenerateDocumentationFile&gt;true&lt;/GenerateDocumentationFile&gt;
&lt;/PropertyGroup&gt;
Code language: HTML, XML (xml)

ビルドコマンドを実行:

dotnet build
役割

このXMLファイルには<summary>、<param>、<returns>などのドキュメントタグが全て保存され、ドキュメント生成の元データとなります。またVSがこのファイルを読み込み、IntelliSenseのマウスオーバー表示にコメントを反映します。

その他ドキュメント作成ツール

Microsoft公式 DocFX(マイクロソフト推奨、簡単操作で静的HTMLドキュメントサイトを出力)

Sandcastle(マイクロソフト従来型ツール、オフラインCHMヘルプファイル作成)

サードパーティ軽量ツール(Doxygenなど)

3種類のコメント構文について解説完了

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です