这就是我的代码:
public class Inventory
{
private List<Item> list = new List<Item>();
public List<Item> list { get; set; }
public Inventory()
{
list = new List<Item>()
{
new Item("iPod"),
new Item("Motorolla"),
new Item("Samsung"),
new Item("Nokia")
};
}
public override String ToString()
{
String stuff = null;
for (int i = 0; i < list.Count; i++)
{
Item items = list[i];
stuff += items.ToString();
}
return name + stuff;
}
}
这是我的Item类:
public class Item
{
public override String ToString() => ProductCost().ToString();
}
在我的Form.cs下:
private void Form1_Load(object sender, EventArgs e)
{
var products = new Inventory();
lstBox.Items.Add(products); // Display products
}
我的问题不是返回"name + stuff"
,而是返回“ProductCost”,因为我已经初始化了一个Inventory对象,所以我很困惑 - 它不应该调用被覆盖的ToString()
方法Inventory
而不是我在Item.cs中的内容?
注意:我需要同时执行ToString()
,所以不会删除其中一个不幸。
答案 0 :(得分:0)
它正在返回Item.ToString()
,因为您在执行stuff += items.ToString();
时正在调用它。
相反,只需:
string stuff = "Items: ";
for (int i = 0; i < list.Count; i++)
{
Item items = list[i];
stuff += items.Name + ", ";
}
// Remove the last comma
stuff = stuff.Substring(0, s.LastIndexOf(", "));
return name + stuff;
如果我们不删除最后一个逗号,我们会得到:
"Items: Ipod, Motorolla, Samsung, Nokia, "
而不是:
"Items: Ipod, Motorolla, Samsung, Nokia"