2017-08-10 118 views
0

我正在开发一个项目,而且我也是C#的新手。 所以,我必须从文件传入一些值到一个对象,我想检查它们是否通过打印正确传递,但无法找到方法。 我有一个类酒店我想要把值在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

嗨,欢迎来到Stack Overflow。 'name'是'Hotel'的私有属性,这可能是您在尝试使用'Console.WriteLine(hotel [0] .name);'时得到的错误消息。很可能你想要公开这些属性。请考虑发布编译器在将来的问题中给出的错误消息,因为这可以让人们更容易帮助您。 –

+0

您可以重写'ToString'来获得更好的'Console.WriteLine(hotel)'输出。 'hotel [0] .name'不起作用,因为'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

附:你的代码的这些线是一种毫无意义的:

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

尝试用这种替代它们:

Hotel[] hotel = new Hotel[3]; 

基本上你正在做的是使大小为0的家(为什么你曾经想要的数组那么?),然后用大小为3的新数组替换该数组。我提供的新代码仅在第一次创建大小为3的数组。

+0

非常感谢您的快速回复!编译错误是固定的,但输出是空白的。事先,我打印'Name'本身'Console.WriteLine(Name);'来检查它是否是空白的,但它是正确的。如果你能在我的代码中发现任何错误,那将是非常有用的。如果没有,没关系,你已经完成了你的工作来帮助 – PeterS

+0

@PeterS很高兴能有帮助。如果您可以将此标记为答案,让其他人知道这解决了您的问题,那就太棒了!至于你的名字是空白的问题,我认为这归结于阅读和解析文件信息的问题。但是你已经将它留作评论,所以我无法确定。如果你提供它,我可以更好地帮助你。 –

+0

您是否检查了'Name' _after_从文件中读取数据的值?我能想到的一个原因是,当你从文件中读取数据时,你会以某种方式覆盖变量。 – Sach