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

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

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

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

コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

Q&A

解決済

1回答

637閲覧

コンストラクタからユーザ定義のクラスを利用するもエラーに阻止される

Sunameroom

総合スコア9

C#

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

コンストラクタ

オブジェクト指向言語において、オブジェクトを生成時に呼び出され、データの初期化などを行なう関数・メソッドのことである。

1グッド

0クリップ

投稿2021/08/02 15:52

編集2021/08/02 15:53

BuildingクラスのコンストラクタでFloorクラスのリストを作成したいのですが、
下記コンパイルエラーが表示され、ビルドが通りません。
同じような構造のFloorクラスのコンストラクタから参照するRoomクラスはエラーが起こらないのはなぜなのでしょうか。
おそらく初歩的な部分だと思うので恐縮ですが、よろしくお願いいたします。

言語 : C# version7.0
開発環境 : Microsoft Visual Studio 2019

「CS0122 : 'Program.Floor.Floor()'はアクセスできない保護レベルになっています」

該当のソースコード

C#

1using System; 2using System.Collections.Generic; 3 4class Program 5{ 6 static void Main(string[] args) 7 { 8 } 9 10 class Building 11 { 12 public List<Floor> Floors { get; set; } 13 14 Building() 15 { 16 Floors = new List<Floor>(); 17 for (int i = 0; i < 3; i++) 18 { 19 Floors.Add(new Floor()); ← 問題のエラーが起きる箇所 20 } 21 } 22 } 23 class Floor 24 { 25 public List<Room> Rooms { get; set; } 26 Floor() 27 { 28 Rooms = new List<Room>(); 29 for (int i = 0; i < 10; i++) 30 { 31 Rooms.Add(new Room()); ← ここは問題のエラーが起きない 32 } 33 } 34 } 35 class Room 36 { 37 public int Residents { get; set; } = 0; 38 } 39} 40
mamemaru👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

Floorはコンストラクタにpublicが指定されていないのでprivateになっていて、他のクラスからはコンストラクタにアクセス出来ないのでインスタンスが作成出来ません。
Roomはコンストラクタを記述していないので、パラメータ無しのpublicコンストラクタが自動で作成されています。

言語仕様に関する事は、Microsoftのドキュメントをまず確認してください。詳細に記載されています。
コンストラクター (C# プログラミング ガイド)

投稿2021/08/02 16:44

編集2021/08/02 16:55
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Sunameroom

2021/08/03 05:24

回答ありがとうございます。 とても助かりました。 今後同様の問題があった際はドキュメントをしっかり確認することを心がけます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問