问题:我正在尝试更新列表。如果某个项目的ID已经存在于列表中,我想添加到该项目的数量。如果没有,那么我想添加另一个项目到列表中。C#StackOverflowException
cart = (List<OrderItem>)Session["cart"];
for(int counter = cart.Count-1; counter >= 0; counter--)
{
if (cart[counter].productId == item.productId)
{
cart[counter].productQuantity += item.productQuantity;
}
else if (counter == 0)
{
cart.Add(item);
}
}
cart[counter]
和item
表示我的一个自定义对象的一个实例(或多个)。目前,当我终于找到一个匹配的ID时,所有东西都像应该工作一样,但是我得到了抛出在我的自定义对象类中的StackOverflowException。
public int productQuantity
{
get
{
return _productQuantity;
}
set
{
productQuantity = value;
}
}
它被扔到“set”的开括号处。请问有人能告诉我什么是错误的,因为我在过去的两个半小时内一直没有结果。先谢谢你。
在一个侧面说明,词典或HashSet的可能更好地为你;在这种情况下不需要收集遍历。 – 2010-06-01 04:35:47
是否有返回_productQuantity并设置productQuantity的原因?我通常使用相同的支持成员。 – 2010-06-01 04:38:11
@Rob:我认为这是一个命名约定/数据隐藏的事情。我不记得我第一次看到它的时间/地点,但我一直在编写我的学校项目,直到现在我从未遇到过问题。我来自Java背景,所以C#中的set/get属性 - 在Java中我实际上必须为该功能编写getter和setter方法。我想我可能刚刚在某处看到了一些代码片段,并且在我的脑海中混杂了一些东西。 – KSwift87 2010-06-01 05:07:21