C#初心者です。
Program.csとは別のファイルに記載したクラスの変数にアクセスするサンプルプログラムを作りたいと思ったのですが、エラーが出てしまいます。
Visual Studio 2019 によるプロジェクトの作り方に問題があるのかソースコードに問題があるのかわからないので教えていただきたいです。
やったこと
- Visual Studio 2019 で プロジェクトファイルを新規作成。
- 作成されたPrograms.csにソースコードを書いた。また、同じフォルダにPerson.csを作成し、ソースコードを書いた。
- ConsoleApp1.csprojを開いて、「デバッグの開始(F5)」を実行
フォルダ構成(ConsoleApp1\ConsoleApp1\直下以外省略しています)
ConsoleApp1
├ .vs
├ ConsoleApp1
...├ bin
...├ obj
...├ ConsoleApp1.csproj
...├ Person.cs
...└ Program.cs
└ ConsoleApp1.sh
Program.cs(変更しました。)
C#
1using System; 2 3namespace ConsoleApp1 4{ 5 class Program 6 { 7 /// <summary> 8 /// メイン関数。 9 /// </summary> 10 /// <param name="args">コマンドライン引数</param> 11 /// <returns></returns> 12 13 public static void Main(string[] args) 14 { 15 // インスタンス格納用変数定義 16 Person person1, person2; 17 18 // インスタンス生成 19 person1 = new Person("taro", 10); 20 person2 = new Person("jiro", 9); 21 22 person1.print_info(); 23 person2.print_info(); 24 25 Console.WriteLine("person1 name: {0}", person1.name); 26 Console.WriteLine("person2 name: {0}", person2.name); 27 28 wait_input(); 29 } 30 31 32 /// <summary> 33 /// コンソール画面を終了待ち状態にする。 34 /// コンソール画面自動クローズ防止用。 35 /// </summary> 36 /// <param name=""></param> 37 /// <returns></returns> 38 39 public static void wait_input() 40 { 41 Console.Write("終了するにはEnterキーを押してください。"); 42 Console.Read(); 43 } 44 } 45}
Person.cs(変更しました。)
C#
1using System; 2 3public class Person 4{ 5 public string name = ""; 6 public int age = 0; 7 8 /// <summary> 9 /// コンストラクタ。 10 /// </summary> 11 /// <param name=""></param> 12 /// <returns></returns> 13 public Person(String name, int age) 14 { 15 this.name = name; 16 this.age = age; 17 Console.WriteLine("コンストラクタ"); 18 } 19 20 /// <summary> 21 /// nameとageを表示する。 22 /// </summary> 23 /// <param name=""></param> 24 /// <returns></returns> 25 public void print_info() 26 { 27 Console.WriteLine("name: {0}", this.name); 28 Console.WriteLine("age: {0}", this.age); 29 } 30 31}
基本的な変数の定義の方法から理解されていないようです。
また、public等のアクセス識別子を省略した場合はprivateとなります。
原因はエラーメッセージのままなので、エラーメッセージ、エラーコードで検索してみたりしましょう。
[1-2. 投稿前に検索し、できるところまで自分でやってみましょう]
https://teratail.com/help/question-tips#questionTips1-2
およそマトモな勉強をしたように思えないんで、ここで質問する前に入門書の一冊ぐらい買って読むぐらいの努力はしよう。
こんなレベルから家庭教師レベルで指導して欲しいなら
https://menta.work/
こういうサービスでお金払って質問した方がマシ。
ソースコードを変更しました。
変更箇所:
・Person型変数定義修正
・Personクラスインスタンス変数定義修正
・Personクラスprint_info()メソッドのstatic外す修正
質問文の変更後のソースコード更新しました。
静的プロパティ、静的メソッドについて調べてはどうでしょうか?
過去 150 以上質問してるのにこういう質問しかできないとはこれいかに・・・って感じですね。開発環境ぐらい書きませんか?
なんのためにstaticって書きました?
コード直しました。
解決しました。
皆さん回答ありがとうございました。
回答1件
あなたの回答
tips
プレビュー