对于家庭作业,我需要创建一个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?
答案 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());
}
只检查任何拼写错误或语法错误,因为我只在此处输入内联