} expected の原因と直し方
波括弧の対応が崩れたときに出ます。エラー行がファイル末尾やブロック末尾を指すため、原因箇所の特定にコツが要ります。
エラーメッセージの読み方
Program.cs(5,2): error CS1513: } expected
Program.cs- ファイル名
5- 行番号
2- 列番号 — この位置でコンパイラが解析に失敗しました
CS1513- エラーコード — 検索するとMicrosoftの解説ページが見つかります
} expected- 内容 — 期待していたもの、または受け付けられなかったもの
このエラーが出る典型パターン
パターン1
1 class Program { 2 static void Main(string[] args) { 3 System.Console.WriteLine("Hello"); 4 ^ 5 }
Program.cs(5,2): error CS1513: } expected
Mainメソッドの閉じ括弧が足りません。コンパイラはファイル末尾まで読んでから対応が崩れていることに気づきます。
直し方: (空) を } にします。
広告
広告スロット(未設定)
パターン2
1 class Program { 2 static void Main(string[] args) { 3 int n = 3; 4 if (n > 0) { 5 System.Console.WriteLine("positive"); 6 ^ 7 } 8 }
Program.cs(8,2): error CS1513: } expected
if文の閉じ括弧が足りません。波括弧の対応はインデントを揃えて数えると見つけやすくなります。
直し方: (空) を } にします。
パターン3
1 class Program { 2 static void Main(string[] args) { 3 System.Console.WriteLine("A"); 4 } 5 ^
Program.cs(4,6): error CS1513: } expected
クラス自体の閉じ括弧が足りません。エラー行はファイル末尾を指しますが、原因はもっと上にあります。
直し方: (空) を } にします。
よくある誤解
エラー行はファイルの終わり(またはブロックの終端)を指しますが、実際に閉じ忘れているのはもっと上の行です。インデントを揃えて対応を数えるほうが確実です。
まとめ
} expectedは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。