2017-08-10 14 views
0

プロジェクトで作業しているImとc#で新しいImです。 ファイルからオブジェクトにいくつかの値を渡す必要があり、それらを印刷して正しく渡されているかどうかを確認したいが、方法を見つけることができない。 私は値にC#のオブジェクト[]。値を出力する

public class Hotel 
{ 
    int id { get; set; } 
    string name { get; set; } 
    int stars { get; set; } 
    int numberOfRooms { get; set; } 
    public Hotel(int Id, string Name, int Stars, int NumberOfRooms) 
    { 
     id = Id; 
     name = Name; 
     stars = Stars; 
     numberOfRooms = NumberOfRooms; 
    } 
} 

そしてすべてが

public class Running 
    { 
     static void Main(string[] args) 
     { 
      Hotel[] hotel = new Hotel[0]; 
      hotel = new Hotel[3]; 
      int Id = 0; 
      string Name = ""; 
      int Stars = 0; 
      int NumberOfRooms = 0; 
      //... 
      //code for reading file and passing the values into Id, Name, Stars, NumberOfRooms 
      hotel[0] = new Hotel(Id, Name, Stars, NumberOfRooms); 
     } 
    } 

に行われるメインとクラスを実行を配置する場所クラスホテルが、私は「例えばConsole.WriteLine(hotel[0].name);や他のを試してみましたコンパイルエラーが発生しました。 Console.WriteLine(hotel);だけが「Project.Hotel」と表示されていました。誰かが助けて助けてくれれば幸いです。また、私は何かを間違えた場合、本当にすみません。前もって感謝します。

+3

こんにちは。 'name'は' Hotel'のプライベートプロパティです。Console.WriteLine(hotel [0] .name); 'を試したときに表示されるエラーメッセージです。これらのプロパティを公開する可能性が高いです。コンパイラが将来の質問に与えるエラーメッセージを投稿することを検討してください。これにより、人々があなたを助けやすくなります。 –

+0

'ToString'をオーバーライドして、' Console.WriteLine(hotel) 'のより良い出力を得ることができます。 'name'はprivate(デフォルト)なので' hotel [0] .name'は動作しません。 – juharr

+0

@ LasseV.Karlsen通知のために多くのおかげで、それは間違いなく、そしてアドバイスのためのエラーでした! – PeterS

答えて

4

あなたの問題は、クラスのプロパティが公開されていないことです。デフォルトでは非公開です。クラス外からアクセスできるようにするには、それらを公開する必要があります。ここ

public int id { get; set; } 
public string name { get; set; } 
public int stars { get; set; } 
public int numberOfRooms { get; set; } 

詳細情報::https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers

P.S.このようなあなたのコードのこれらの行は一種の無意味されています。基本的にはあなたが何をしていた(なぜあなたは今までに望むサイズ0のホテルの配列を作っている

Hotel[] hotel = new Hotel[3]; 

Hotel[] hotel = new Hotel[0]; 
hotel = new Hotel[3]; 

はこれでそれらを交換してみてください?)、その配列をサイズ3の新しい配列に置き換えます。私が提供した新しいコードは、最初にサイズ3の配列を作成するだけです。

+0

お返事ありがとうございました!コンパイルエラーは修正されましたが、出力は空白でした。前もって、私は 'Name'自身の 'Console.WriteLine(Name);'も印刷して空白であるかどうかを確認しましたが、正しいものでした。もしあなたが間違ったコードを見つけたら、本当に役に立ちます。そうでない場合は、助けてもらえましたか? – PeterS

+0

@PeterS喜んで助けに来てください。他人にあなたの問題を解決したことを知らせるための回答としてこれをマークすることができれば、それは素晴らしいことでしょう!あなたの名前は空白の問題として、私はあなたのファイルから情報を読み込んで解析する際に問題になると思います。しかし、あなたはそれをコメントとして残しているので、私は確かに言えません。あなたがそれを提供すれば、私はあなたを助けることができます。 –

+0

'Name'_after_の値をファイルから読み取ったのを確認しましたか?私が考えることができる1つの理由は、あなたが何らかの形で変数を上書きするファイルからデータを読み込んでいるときです。 – Sach

関連する問題