c# - 2 跨多个类覆盖 ToString() 方法
问题描述
这就是我的代码的样子:
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;
}
}
这是我的项目类:
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()
实现两者,所以不,不幸的是删除其中一个不会飞。
解决方案
它正在返回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"
推荐阅读
- django - 在 Wagtail v2 API 中,如何按外键字符串过滤(由 __str__ 方法提供)
- css - CSS 样式化 img 和段落子元素
- ios - 在这种情况下,如何使用自定义 tableView 单元格处理可重用单元格(从代码中的其他位置更改单元格背景颜色不起作用)
- c++ - SDL2 SDL_GetRenderDrawColor 只能显示黑色
- fortran - 为什么这个 Fortran 函数在打印两个 Hello World 之间需要很长时间
- reactjs - React Native 背景循环动画
- mysql - 替换列中字符串的某些字符(MySQL)
- gradle - 有没有办法从导入的 gradle 脚本中访问变量?
- sql - PostgreSQL 是否提供了一种方法来在一个查询中运行 DELETE 查询后返回满足条件的剩余行数?
- android - 重新选择时片段(底部导航视图)中的 RecyclerView 不显示