我正在制作一个购物篮winforms应用程序,它将接收用户的输入,用户将指定产品名称,价格和数量。
我有一个与app相关的方法和一个创建列表的构造函数的dll - 我已经在winforms代码中实例化了这个。
我遇到的问题是我无法在列表框中分隔不同的产品,它会替换用户输入的上一个项目,例如它目前会读到:
Product Price Quantity
Bread 3.60 3
Milk 6.57 5
Eggs 8.97 7
Bread 11.37 9
我希望它阅读:
Product Price Quantity
Bread 6.00 5
Milk 1.19 2
Eggs 1.50 2
我希望单独显示每个项目,以及相应的价格和当前数量。
我尝试使用foreach
循环迭代整个篮子但是我收到错误:
foreach语句不能对类型的变量进行操作 'namespace.ShoppingBasket'因为'namespace.ShoppingBasket'没有 包含'GetEnumerator'的公共定义
我应该使用界面来实现这个目标吗?
答案 0 :(得分:2)
如果要在ShoppingBasket
中枚举篮子,则foreach
课程不会实现界面IEnumerable
。如果您不想从头开始实现该接口,则可以从已经实现该接口的某个类继承(例如List<T>
)。
E.g。如果您将订单商品存储在列表中,则可以返回它的枚举器:
public class ShoppingBasket : IEnumerable<OrderItem>
{
private List<OrderItem> items = new List<OrderItem>();
// ...
public IEnumerator<OrderItem> GetEnumerator()
{
return items.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
注意:您也可以添加IEnumerator GetEnumerator()
方法,而不是实现IEnumerable
接口。这也将使foreach
起作用。