C# 学習2日目 その2 複数のエントリーポイント エラー
学習サンプル2本目でプログラムで複数のエントリポイントが定義されています
というエラーがでます。
同じ体験がC言語学習の時もあったので・・・
という問題です。
これ結構、初心者にとっては、躓きポイントだなぁと思って、ひと枠設けました。
初心者なりに試行錯誤したメモです。
私自身も学習2日目ですので、間違っているところ や、他にもあるよ、みたいなところが
ありましたら、教えていただけると幸いです。
エラー再現
学習サンプルの1本目の時はいいんです。
プロジェクトの中に、Main()関数は一つしかないから。
学習サンプルの2本目・・・コードを書き上げ実行します。
エラー理由は
プログラムで複数のエントリ ポイントが定義されています。
エントリ ポイントを含む型を指定するには、/main でコンパイルしてください。
つまり、「Main()関数(エントリーポイント)が複数あるけど、どれが
本当のエントリーポイントなんだ」というエラーですね。
一応、ダイアログで「はい」ボタンを押すと、2本目実行はしてくれますが、
3本目も、4本目も以降ずっとMain()を使い続ける限り、こうなりそうです。
エラーを許容しながら学習進めるのって、それが癖になってしまいそうで
あまりよろしくないように思います。
対策1 サンプルごとにプロジェクトを作る
本来の想定は、これなのかどうなのかわかりませんが、
サンプルごとにプロジェクトを作れば、
1プロジェクト、1エントリーポイントになり、解決します。
ただ、学習サンプルって、短いので、結構これは大変です。
C#のVisual Studioって、ひとつひとつプロジェクト作るのは結構めんどくさいです。
対策2 スタートアップオブジェクトプロパティで実行クラスを毎回指定する
これが一番簡単かもしれません。
毎回プロジェクト作るよりは10倍良いです。
どのサンプルクラスを実行するのかクラスを指定する方法です。
指定する方法
ソリューションエクスプローラーのプロジェクト名を右クリック
メニューが開くので、メニュー「プロパティ」を選びます
スタートアップオブジェクトのところをクリックすると、
プロジェクト内の記述済み(サンプル)のクラスが選べます。
そのクラスだけが実行されます。
閉じ方は、▼で、ソースコード名を選べば閉じましたが、やり方探すの苦労しました。
ひとつのプロジェクトの中に、サンプル通りに作れば、どのサンプルを実行するかは、
最初から最後まで、選択するだけの操作です。
対策3 終わったサンプルはコメントにしていく
実際多くの方は、これをするだろうなぁと思います(これも想像)。
私も最初はこれをしようと思っていました。
書いては消すという方法もありますが、学習を振り返れないので、
消すよりは、終わったサンプルはコメントにしていくのがいいと思いました。
結局、理由があって、次の方法を選びました。
対策4 (私が選んだ方法) 各サンプルを大区切りでひとつにまとめる
1個のエントリーポイント(Main())で、複数のサンプルが動くようにひとつに
ソースコードをまとめていく方法です。
どうしようもまとめられなくなったら、そこでやっと新しいプロジェクトを作る形です。
ゲーム作るようになったら、そこそこ大きいプログラムを作ると思いますので、
その練習にもちょうどいいのではないかと思いました。
ただ、プログラミングそのものを全くかじったことない方は
この方法はあまりしないほうがいいかもしれません。
(2023-01-13後日追記)各サンプルのMainの中身をClassに置き換えて、
Mainの中は各Classを実行させるだけにするのもひとつの良い方法ですね。
まとめ
考えたり、調べてみたりしたら、方法はいろいろとありました。
私は、対策4をすることにしましたが、
サンプル通りに次々こなしたいという方は、
対策2、対策3が、おすすめかなぁと思います。
(名前空間を使う方法は試してみたところうまくいかなかったため、削除しました。)
ちなみに、真の正解は、エラー内容に
/mainでコンパイルしてくださいってありますが、これだと思います。
初心者の私は、そこまでたどり着けませんでした💦