2026年9月2日 記事修正
「解決策」欄の記載内容を修正
はじめに
前回記事の続き ※未読でも問題なし
プロジェクト内の2つのcsファイル「Program.cs」と「Program2.cs」にそれぞれ下記の通り記述してみた。
Console.WriteLine("あああHello, World!");
namespace MyApp
{
class Program2
{
static void Main(string[] args)
{
Console.WriteLine("あいうえおHello, World!");
}
}
}
この状態でプログラムを実行しようとするとタイトルの警告
プログラムのエントリ ポイントは、グローバル コードです。エントリ ポイント 'Program2.Main(string[])' を 無視します。
エントリ ポイントって何?
プログラムの実行が最初に始まる場所のこと。Entry Point。
上記の2ファイルは、一方がトップレベルステートメント、もう一方がMainメソッドを記述しており、いずれもエントリ ポイントとしての条件を満たしている。
グローバル コードって何?
クラスやメソッドで囲まずにファイルの最上部に直接書いた処理のこと。
要するにトップレベルステートメント。
つまり今回の警告文は「グローバルコードから処理を開始するから、Mainメソッドは無視しますよ」と言うことになる。警告文そのままの内容
エラーではなく警告なので、プログラムの実行自体は問題なく出来る。
解決策
今回の警告の原因は、同一プロジェクト内にエントリポイントが2つ混在していたこと。
解決するにはどちらか一方のエントリポイントに統一し、もう一方の記述は削除、またはコメントアウトする。
※どちらを採用するかは現場や状況によりけりだが、ある程度の規模の開発でもエントリポイントはトップレベルステートメントの利用が標準・推奨されている。
参考↓
終わりに
グローバルコード = トップレベルステートメントということをわかっていれば、警告文も難なく理解できる。
ただ、「C# グローバルコード」とかでググっても上記の説明を明示してるサイトが中々見つからなかった(この警告文はかなり出てきた)。
警告文は結構感覚的に片付けてしまったりもするので、こうやって一つずつしっかり解きほぐしていくと単語の理解も深まって勉強になる。
