创建一个对象列表,并通过另一个类在控制台中显示它们
本文关键字:控制台 显示 另一个 列表 一个对象 创建 | 更新日期: 2023-09-27 18:10:50
对于家庭作业,我需要创建一个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;
}
}
当添加overderlines . add (newOrderLine)时,newOrderLine是在另一个具有工作toString的类中创建的对象。如何显示Program.CS中的所有newOrderLines ?
我假设你的主方法看起来像这样:
{
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; }
}
假设您有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();
请注意,将类打印到控制台通常不被认为是好的做法。我只是想告诉你解决这个问题的另一种方法。
如果在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());
}
检查是否有任何拼写错误或语法错误,因为我只在这里输入了inline
这是你需要的吗?
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());
}
}