質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

解決済

Mainメソッドによるエラーを解消させたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

1回答

0グッド

0クリップ

321閲覧

投稿2022/11/03 02:50

編集2022/11/03 03:34

前提

C#でオブジェクト指向のプログラムを作成しております。

参考資料:1週間でC#の基礎が学べる本

実現したいこと

下記のエラーを解消させたい。

プログラムで複数のエントリーポイントが定義されております。 エントリ ポイントを含む型を指定するには、/main でコンパイルしてください。

該当のソースコード(1つめ)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample401 { class Program { static void Main(string[] args) { Person p1, p2; p1 = new Person(); p2 = new Person(); p1.name = "yamada"; p1.age = 19; p2.SetAgeAndName("sato", 23); p1.ShowAgeAndName(); p2.ShowAgeAndName(); } } }

ソースコード(2つめ)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample401 { class Person { //名前(フィールド) public string name = ""; //年齢(フィールド) public int age = 0; //情報表示 public void ShowAgeAndName() { Console.WriteLine("名前:{0} 年齢:{1},name,age"); } //情報設定 public void SetAgeAndName(string name, int age) { this.name = name; this.age = age; } } }

試したこと

エラーの原因はMainメソッドが2つ以上あることが原因のようですが、作成したプログラムにおいては1つしかない認識です。
どのようにすればこのエラーが解消されるのでしょうか。
アドバイスいただければ幸いです。

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.3.6
ターゲットフレームワーク(対象フレームワーク):.NET Framework4.7.2

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

SurferOnWww

2022/11/03 02:56

ターゲットフレームワークは何ですか?  質問に書かれていないコードがあるはずですが、それも書いてください。
SurferOnWww

2022/11/03 03:03 編集

ターゲットフレームワークは何ですか? 「ソースコード(2つめ)」はどこにどのような形で書かれているのですか? 同じソリューション内の別プロジェクトのクラスファイル?
退会済みユーザー

退会済みユーザー

2022/11/03 03:03

質問に書かれていないコードがあるはずですが、それも書いてください。 →2つめのソースコードも追加させていただきました。 勉強不足で申し訳ありませんが、ターゲットフレームワークというのは.Netなどのことでしょうか。
退会済みユーザー

退会済みユーザー

2022/11/03 03:04

使用しているのは、「.NET Framework」です。
SurferOnWww

2022/11/03 03:04

> ターゲットフレームワークというのは.Netなどのことでしょうか。 プロジェクトのプロパティを開くとそれに書かれています。
退会済みユーザー

退会済みユーザー

2022/11/03 03:06

「ソースコード(2つめ)」はどこにどのような形で書かれているのですか? 同じソリューション内の別プロジェクトのクラスファイル? →ありがとうございます。プログラム2つともVS2019で作成しており、同じプロジェクト内に2つプログラムを作成しております。 回答になっておりますでしょうか…
退会済みユーザー

退会済みユーザー

2022/11/03 03:08

> ターゲットフレームワークというのは.Netなどのことでしょうか。 プロジェクトのプロパティを開くとそれに書かれています。 →ありがとうございます。確認したところ、対象のフレームワークは「.NET Framework4.7.2」になっておりました。
Zuishin

2022/11/03 03:08

Main を新しく作ってはいけません。 プロジェクトを新規作成した際に Main が無かったとしたら、それは実行できないアセンブリか、または見えないところに Main があります。
退会済みユーザー

退会済みユーザー

2022/11/03 03:10

Main を新しく作ってはいけません。 プロジェクトを新規作成した際に Main が無かったとしたら、それは実行できないアセンブリか、または見えないところに Main があります。 →仰る通り、プロジェクトを作成した際、Mainメソッドはありませんでしたので勝手に追加してしまいました。プロジェクト作成時に自動的にMainメソッドを表示させるようにするにはどのような方法がありますでしょうか。
SurferOnWww

2022/11/03 03:10

> プログラム2つともVS2019で作成しており VS2022 ではなかったのですか? > 同じプロジェクト内に2つプログラムを作成しております 「2つプログラム」とはどういう意味ですか? たぶん質問に書いてないコードがあるのだと思いますが、全部書いてください。 
SurferOnWww

2022/11/03 03:14 編集

ターゲットフレームワークは何ですか? ・・・3 回目の質問 .NET 6.0 でコンソールアプリを作ると、Main は出てきませんが(隠れている)、それに Main のある「該当のソースコード(1つめ)」を追加したのではないかと想像。  
Zuishin

2022/11/03 03:13

作成すべきプロジェクトを間違えているんだと思います。本の通りに作成してみましょう。 それでもわからなければ、プロジェクトの作成手順を回答者に伝わるよう詳細に書きましょう。 書くのはここではなく、編集ボタンを押して質問を編集します。
dodox86

2022/11/03 03:16

VisualStudio 2022だと、プロジェクトのフォルダー下に .cs ファイルを置くだけでプロジェクトに自動で追加されてしまったかと思います。Mainメソッドがあるファイルを移動するなり削除するなりして重複しないようしてみてください。
dodox86

2022/11/03 03:18

まあ、質問の体裁としては既にご指摘があるよう、その問題に至った手順を詳しく記載すべきですね。
退会済みユーザー

退会済みユーザー

2022/11/03 03:20

> プログラム2つともVS2019で作成しており VS2022 ではなかったのですか? →失礼しました。2022です。 > 同じプロジェクト内に2つプログラムを作成しております 「2つプログラム」とはどういう意味ですか? たぶん質問に書いてないコードがあるのだと思いますが、全部書いてください。 →わたしが作成したプログラムは既に記載させていたただいてるものになります。他にはプロジェクト作成時に自動的に作成されているプログラムもあります。そちらでよろしければ掲載させていただきます。 ターゲットフレームワークは何ですか? ・・・3 回目の質問 →プロジェクトの[プロバティ]で確認したところ、「ターゲットフレームワーク」という文言はありませんでした。その代わり、「対象フレームワーク」というものがありましたので、そちらのことなのかと思い、先程記載させていただきました。
SurferOnWww

2022/11/03 03:27

> 他にはプロジェクト作成時に自動的に作成されているプログラムもあります。そちらでよろしければ掲載させていただきます。 全部載せてください。でないと分かりません。 「ターゲットフレームワーク」=「対象フレームワーク」です。 > 対象のフレームワークは「.NET Framework4.7.2」になっておりました。 上記は質問欄を編集して追加情報として追記願います。

回答1

0

ベストアンサー

話が通じないですね。

ちゃんとやってれば main が二つなどという問題は出ないということを書いておきます。何が質問者さんのコードと違うのか調べてみてください。

VS2022 のテンプレートで .NET Framework 4.7.2 のコンソールアプリを作成。作成直後の Program.cs のコード。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample401 { internal class Program { static void Main(string[] args) { } } }

それに質問者さんのコードをコピペして追加。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample401 { internal class Program { static void Main(string[] args) { Person p1, p2; p1 = new Person(); p2 = new Person(); p1.name = "yamada"; p1.age = 19; p2.SetAgeAndName("sato", 23); p1.ShowAgeAndName(); p2.ShowAgeAndName(); } } class Person { //名前(フィールド) public string name = ""; //年齢(フィールド) public int age = 0; //情報表示 public void ShowAgeAndName() { Console.WriteLine("名前:{0} 年齢:{1},name,age"); } //情報設定 public void SetAgeAndName(string name, int age) { this.name = name; this.age = age; } } }

実行結果:

イメージ説明

問題なくコードに書いた通りの結果になります。Console.WriteLine("名前:{0} 年齢:{1},name,age"); は直さないと期待した結果にはならないと思いますが。

投稿2022/11/03 03:44

SurferOnWww

総合スコア17349

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2022/11/03 03:54

勉強不足で思うように状況をしっかりお伝えすることができず、申し訳ありません。 修正済みプログラムありがとうございます。 参考にさせていただきます。 実は先程VS2022ではなく、VS2019をインストールし、同じようにプログラムを作成したところ実行ができました。 なおフレームワークは同じ「.NET Framework4.7.2」です。 ソフトの問題だったのでしょうか。
Zuishin

2022/11/03 04:01

> ソフトの問題だったのでしょうか。 いいえ。あなたの手順の問題です。 やり直した時に前回と違っていたというだけです。
SurferOnWww

2022/11/03 05:30

> ソフトの問題だったのでしょうか。 あなたの VS2022 がどこか壊れているということでない限り、あなたのやり方に問題があったこと以外に原因はないと思います。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。