创建对象列表并通过另一个类在控制台中显示它们

时间:2011-10-11 02:24:29

标签: c# list

对于家庭作业,我需要创建一个List<T>,向其添加对象,并显示对象toString。这就是我所拥有的:

public class Order
{
    ...
      public List<OrderLine> orderLines;
      public Order(User user1)
      {
          ...
          orderLines = new List<OrderLine>();
      }

      public void AddOrderLine(OrderLine newOrderLine)
      {
          orderLines.Add(newOrderLine);
      }
}

public class OrderLine
{
   public OrderLine(Product p1, int q1)
   {
      ...
   }
   public override string ToString() //Required by teacher
   {
      string myOrderLine;
      myOrderLine = String.Format("[Product name: {0}; Price: {1}; Quantity: {2}]", 
         product.name, product.price, quantity);
      return myOrderLine;
   }
}

添加oerderLines.Add(newOrderLine)时,新的OrderLine是在另一个具有工作toString的类中创建的对象。如何显示Program.CS中的所有newOrderLine?

4 个答案:

答案 0 :(得分:1)

我认为你的主要方法看起来像这样:

{    
   User user = new User();    
   Order order = new Order(user);   
   OrderLine orderLine1 = new OrderLine();   
   order.AddOrderLine(orderLine1); 
}

如果我理解你说的正确,OrderLine已经覆盖了ToString(),所以当你调用ToString()时,它会返回一些“有意义的人”。在这种情况下,你唯一需要做的就是

foreach (var orderLine in order.orderLines)
{
    Console.WriteLine(orderLine.ToString());
}

请注意,不公开公开字段(例如orderLines)被认为是一种好习惯。最好将其设为私有,并创建一个公共财产,如:

public IEnumerable<OrderLine> OrderLines
{
   get { return this.orderLines; }
}

答案 1 :(得分:1)

假设您有OrderLine类的工作.ToString()。如果您只想将它​​们显示到控制台,您可以做一个简单的事情:

foreach(OrderLine orderline in orderLines)
   System.Console.WriteLine(orderline.ToString());

修改

执行此操作的两种简单方法是Mathias概述的方式或将我的代码放在Order类中。例如,添加如下新方法:

public void PrintOrders()
{
    foreach(OrderLine orderline in this.orderLines)
       System.Console.WriteLine(orderline.ToString());  
}

您可以使用它:

User user = new User();    
Order order = new Order(user);   
OrderLine orderLine = new OrderLine();
order.AddOrderLine(orderLine);
order.PrintOrders();

请注意,将课程打印到控制台通常不是一种好习惯。我只想向您展示一种解决问题的不同方式。

答案 2 :(得分:0)

这是你需要的吗?

public static void Main(string[] args)
{
    Order order = new Order();

    OrderLine line1 = new OrderLine(...);
    OrderLine line2 = new OrderLine(...);
    OrderLine line3 = new OrderLine(...);

    order.AddOrderLine(line1);
    order.AddOrderLine(line2);
    order.AddOrderLine(line3);

    foreach (OrderLine line in order.orderLines)
    {
        Console.WriteLine(line.ToString());
    }
}

答案 3 :(得分:0)

如果你在Program.cs中有这样的东西来填充你的Order对象

var order = new Order();
order.AddOrderLine(...);

//this is how you can display each item ToString in the collection
foreach(var o in order.orderLines)
{
   Console.WriteLine(o.ToString());
}

只检查任何拼写错误或语法错误,因为我只在此处输入内联