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

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

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

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

Q&A

解決済

2回答

3006閲覧

教本通りにプログラムを書いているのにエラーが出る

Seeeveeen

総合スコア7

C#

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

0グッド

0クリップ

投稿2021/04/03 09:51

編集2021/04/07 12:23

「一週間で身につくc#言語の基本」というサイトを参考にして勉強しているのですが、サンプルコード通りに書いてもエラーが出てしまいます。なにがいけないのでしょうか。

https://csharp.sevendays-study.com/day6.html

プログラム

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample601 { 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; } } }

ファイル

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample601 { class Program { static void Main(string[] args) { Person p1, p2; p1 = new Person(); p2 = new Person(); p1.name = "山田太郎"; p1.age = 19; p2.SetAgeAndName("佐藤花子", 23); p1.ShowAgeAndName(); p2.ShowAgeAndName(); } } }

エラーコードの内容
プログラムは、エントリポイントに適切な静的Mainメソッドを含んでいません。

追記
hoshi-takanori様
![イメージ説明]

radian様
イメージ説明

遅くなってしまい申し訳ございません。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/04/03 10:30

たぶん、プロジェクトとファイルの構成の作り方が間違っていたのだと思います。以前のご質問同様、Visual Studio 2019をお使いですか?
退会済みユーザー

退会済みユーザー

2021/04/03 10:31

ソリューションエクスプローラーのスクリーンショットを上げてみてください。
m.ts10806

2021/04/03 23:37

書籍と環境まで含めて同じですか? teratailで「参考書通りに書いている」という質問は定期的に上がりますが、大抵その通り書けていないし、目検なので「同じである」というエビデンスも取れません。lとIは別だし大文字小文字も別物です。 「書籍通りに書くこと」を目標としているからそうなります。
dodox86

2021/04/04 02:17

参考にされたサイトのコード自体に問題はありませんが、プロジェクトの作り方はVisual Studioのバージョンに多少振り回されるので、そこまで載っていないのだと思います。(現に、当該サイトではVS2015を前提にされています) 本件についてはソリューションファイルを含め、PersonクラスとProgramクラスをどの*.csファイルに置いて作成してしまったかが問題なのだと思います。今後そういった間違いをしないよう、既に本コメント欄で指摘をいただいているように、設定や現状の構成(スクリーンショット)などを追記し、どう作るべきであったか理解するようにしましょう。
退会済みユーザー

退会済みユーザー

2021/04/06 11:56

質問者さん、無言ですが、回答しているのでそれに対するフィードバックを書いてください。役に立った/立たなかったぐらいはすぐフィーバックできるのでは? 役に立たなかったなら、どこがダメだったかを書いてもらえると、より質問者さんが望む回答が出てくるかも。とにかく無言は NG です。
Seeeveeen

2021/04/06 12:27

返信が遅れてしまい本当に申し訳ございません。こちらから質問しておいて、しかも既に返信が遅れている状態で本当に図々しいのですが、下さった回答を読み、試してみる時間が明日の午後になってしまうので明日の午後に返信させて戴きます。本当にすみません。
Seeeveeen

2021/04/07 12:24

dodos86様 返信が遅れてしまい申し訳ございません。 >vs2019をお使いですか? そうです。そこに初めから目をつけるべきだったと反省しております。 ご指摘ありがとうございました。
Seeeveeen

2021/04/07 12:28

SurferOnWww様 返信が遅れてしまい申し訳ございません。 >半月前はもんだいなかったのですよね? はい、問題ありませんでした。今回は私のファイルの作り方がいけなかったようです。しかし、貴重なご指摘ありがとうございました。
Seeeveeen

2021/04/07 12:37

m.ts10806様 >書籍と環境まで含めて同じですか? 確認したら違いました。 >teratailで「参考書通りに書いている」という質問は定期的に上がりますが、大抵その通り書けていない   し、目検なので「同じである」というエビデンスも取れません。lとIは別だし大文字小文字も別物で  す。 自分でも何回も書き直して、そのたびにエラーが出るので教本のサンプルコードをコピペするということもしましたが同じようにエラーが出てしまったので質問させていただいた次第です。 >「書籍通りに書くこと」を目標にしているからそうなります。 完全に独学で勉強しているので、数学が苦手な人の勉強法のように「わからないところは意味は後々わかってくるはずだから今はとりあえず書き方を完璧にしよう」という精神でやっていました。 環境が違うということに初めに気づいておくべきだったと反省しております。貴重なご指摘をありがとうございました。
Seeeveeen

2021/04/07 13:20

回答してくださった皆様 貴重なお時間を私の初歩的な質問に充ててくださり本当にありがとうございました。 拙い質問と遅い返信でみなさまにご迷惑をかけてしまいました。しかし下さったご指摘で無事にエラーなくデバッグすることができました。これからも頑張って勉強していきたいと思います。改めて皆様、本当にありがとうございました。
guest

回答2

0

ベストアンサー

「一週間で身につくc#言語の基本」というサイトを参考にして勉強しているのですが、サンプルコード通りに書いてもエラーが出てしまいます。なにがいけないのでしょうか。

何がいけないかというと、基本的には:

(1) 参考にしているサイトの説明が初心者向けではない上に、間違い(Person クラスに public が付与されてない)がある(参考サイトの目的がオブジェクト指向の説明なので、プロジェクトの作り方まで手取り足取り書いてあるわけではない)。 ← dekaaki さんのご指摘を受け訂正

(2) 質問者さんがサイトの説明に書いてないことを補ってアプリを完成させることができない。

ということで、手取り足取り説明してくれて、記事の内容に間違いがないサイトを選んでないというのがいけない点だと思います。ネットの記事は玉石混交です(石ならともかく毒が入っていることもあるかも)。初心者にはそのあたりを見極めるのが難しいので、比較的まともだと思われる書籍を参考にすることをお勧めしたいです。

で、問題のアプリを動くようにするにはどうすればいいかですが・・・

質問者さんがどのようにしたのか不明で、そこを議論していても仕方がなさそうなので、質問者さんの現状を修正するのは置いといて、こうすればできるという方法を書いておきます。

(1) Visual Studio のテンプレートを使ってコンソールアプリのソリューション/プロジェクトを作成。

(2) 上記 (1) で作ったソリューションにクラスライブラリのプロジェクトを追加。

(3) クラスライブラリに参考サイトの Person クラスのコードをコピペ。Person クラスに public を付与。

イメージ説明

(4) 上記 (1) で作成したコンソールアプリのプロジェクトに参考サイトの Program クラスのコードをコピペ。参照にクラスライブラリを含める。クラスライブラリの名前空間を using 句で参照する。

イメージ説明

実行結果は:

イメージ説明

【dekaaki さんのご指摘を受け追記】

質問者さんの参考記事は以下のようにしてプロジェクトを作成したと思われます。これなら上で書いた public の付与、参照設定などは不要です。

コンソールアプリのプロジェクトを作ったら、ソリューションエクスプローラーでプロジェクトを右クリックして以下のところまで進み、

イメージ説明

クラスを追加する。それに Person クラスを実装する。

イメージ説明

投稿2021/04/04 02:57

編集2021/04/07 01:09
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dekaaki

2021/04/05 04:25

>間違い(Person クラスに public が付与されてない)がある とありますがクラスのアクセス修飾子が省略された場合はinternalですよね? SurferOnWwwさんのサンプルのように別のプロジェクトにするのであれば確かに間違いですが同じプロジェクトで作成するのであれば間違いとは言いにくい気もします。 かといって初心者の方がアクセス修飾子を省略することがいいとは思いませんがどうでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/05 04:52

そうですね、条件によるので間違いとまでは言えないという意見もあるとは思います。
Seeeveeen

2021/04/06 12:28

返信が遅れてしまい本当に申し訳ございません。こちらから質問しておいて、しかも既に返信が遅れている状態で本当に図々しいのですが、下さった回答を読み、試してみる時間が明日の午後になってしまうので明日の午後に返信させて戴きます。本当にすみません。
Seeeveeen

2021/04/07 13:03

SurferOnWww様、dekaaki様 返信が遅くなってしまい申し訳ございません。 ご指摘くださった内容でエラーがでないようにすることができました。ご指摘通り私のファイルの作り方がいけなかったです。お二人とも貴重なご指摘本当にありがとうございました。
guest

0

1.Visual Studio を立ち上げ
2.新しいプロジェクトの作成
3.コンソールアプリケーション(C#)を選択
4.次へ
5.場所を選択
6.次へ
7.作成
8.元々のコードを全部削除
9.サンプルソースをまんまコピー
10.ビルド
11.実行

実行結果

投稿2021/04/03 10:24

編集2021/04/03 11:10
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Seeeveeen

2021/04/06 12:28

返信が遅れてしまい本当に申し訳ございません。こちらから質問しておいて、しかも既に返信が遅れている状態で本当に図々しいのですが、下さった回答を読み、試してみる時間が明日の午後になってしまうので明日の午後に返信させて戴きます。本当にすみません。
Seeeveeen

2021/04/07 13:11

teratail_dayo様 返信が遅くなってしまい申し訳ございません。 私のc#についての基礎知識が少ないがために起きてしまったエラーでした。早くすらすらとコードをかけるように頑張っていきます。貴重なご指摘ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問