C# 2跨多个类重写ToString()方法
这就是我的代码的样子:C# 2跨多个类重写ToString()方法,c#,C#,这就是我的代码的样子: public class Inventory { private List<Item> list = new List<Item>(); public List<Item> list { get; set; } public Inventory() { list = new List<Item>() { new Item("iPo
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;
}
}
在我的Form.cs下:
private void Form1_Load(object sender, EventArgs e)
{
var products = new Inventory();
lstBox.Items.Add(products); // Display products
}
我的问题不是返回“name+stuff”
,而是返回“ProductCost”,因为我已经初始化了一个Inventory对象,它不应该调用Inventory
中重写的ToString()
方法而不是我在Item.cs中的方法吗
注意:我需要同时实现这两个
ToString()
,因此,不,删除其中一个不会很不幸。它返回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"
你问什么并不完全清楚——当你说“它返回”时,“它”是什么?程序是否正在运行并显示一个项目名为“ProductCost”的列表框?另外,它看起来不像你已经发布了所有相关的代码-在Inventory.ToString()
中什么是name
?是的,它在列表框中显示了产品成本,但我希望的实际上只是其中的名称+产品(列表)。它返回的名称是商店名称,因此我可以很容易地看出它没有返回我在Inventory.cs中创建的ToString()方法这里的代码示例有点不完整。name
是Inventory
类的属性/字段吗?另外,ProductCost().ToString()
做什么?您似乎有三个ToString()
方法,但只提供了其中两个方法的示例。Name有自己的公共属性提供访问权限,ProductCost()只计算产品*税,据我所知,我只做了两个ToString()分开的方法-一个在Item.cs中,另一个在Inventory中。cs@iStudent但是“它回来了”是什么意思?您的意思是Item.ToString
,还是Inventory.ToString
?哪一个给了你这个问题?另外,我不知道为什么您认为这两个独立的ToString
方法是相互干扰的!您可以通过单击指向上的顶部箭头向上投票此答案,并通过单击复选标记将其作为答案接受吗?向上箭头和复选标记都在答案的左上角。你应该看看string.Join
"Items: Ipod, Motorolla, Samsung, Nokia, "
"Items: Ipod, Motorolla, Samsung, Nokia"