問題:我正在嘗試更新列表。如果某個項目的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