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

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

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

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

Q&A

解決済

1回答

7603閲覧

C# 別のファイルのクラスを参照したい

person

総合スコア223

C#

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

0グッド

0クリップ

投稿2021/11/11 02:43

編集2021/11/11 05:05

C#初心者です。

Program.csとは別のファイルに記載したクラスの変数にアクセスするサンプルプログラムを作りたいと思ったのですが、エラーが出てしまいます。
Visual Studio 2019 によるプロジェクトの作り方に問題があるのかソースコードに問題があるのかわからないので教えていただきたいです。

やったこと

  1. Visual Studio 2019 で プロジェクトファイルを新規作成。
  2. 作成されたPrograms.csにソースコードを書いた。また、同じフォルダにPerson.csを作成し、ソースコードを書いた。
  3. 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}

エラー
イメージ説明

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

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

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

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

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

YAmaGNZ

2021/11/11 03:48

基本的な変数の定義の方法から理解されていないようです。 また、public等のアクセス識別子を省略した場合はprivateとなります。
退会済みユーザー

退会済みユーザー

2021/11/11 04:05

原因はエラーメッセージのままなので、エラーメッセージ、エラーコードで検索してみたりしましょう。 [1-2. 投稿前に検索し、できるところまで自分でやってみましょう] https://teratail.com/help/question-tips#questionTips1-2
gentaro

2021/11/11 04:38

およそマトモな勉強をしたように思えないんで、ここで質問する前に入門書の一冊ぐらい買って読むぐらいの努力はしよう。 こんなレベルから家庭教師レベルで指導して欲しいなら https://menta.work/ こういうサービスでお金払って質問した方がマシ。
person

2021/11/11 05:07 編集

ソースコードを変更しました。 変更箇所: ・Person型変数定義修正 ・Personクラスインスタンス変数定義修正 ・Personクラスprint_info()メソッドのstatic外す修正 質問文の変更後のソースコード更新しました。
YAmaGNZ

2021/11/11 04:52

静的プロパティ、静的メソッドについて調べてはどうでしょうか?
退会済みユーザー

退会済みユーザー

2021/11/11 05:03 編集

過去 150 以上質問してるのにこういう質問しかできないとはこれいかに・・・って感じですね。開発環境ぐらい書きませんか?
ozwk

2021/11/11 05:03

なんのためにstaticって書きました?
person

2021/11/11 05:06 編集

コード直しました。 解決しました。 皆さん回答ありがとうございました。
guest

回答1

0

自己解決

質問文に記載したソースコードに変更したことにより解決。

変更箇所:
・Person型変数定義修正
・Personクラスインスタンス変数定義修正
・Personクラスprint_info()メソッドのstatic外す修正

投稿2021/11/11 05:41

編集2021/11/11 05:42
person

総合スコア223

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

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

person

2021/11/12 12:13 編集

メモ Person.csを1つ下の階層に配置しても、ソースコード変更しなくてもエラーにならなかった。 Program.csをその階層に移動したらビルドエラー発生。 ConsoleApp1.csprojを同じ階層に移動してもビルドエラー発生。 のち、全てのファイルは位置を元に戻すと、ビルドエラーは発生しなかった。 Visual Studio 2019 を使わず csc Program.cs を実行してもダメだった。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問