我有一類名爲ACCESSOIRE:C#列表包含項目
class accessoire
{
public int value1 { get; set; }
public string Value2 { get; set; }
}
然後我有一個產品
List<accessoire> accessoires
的列表,我有一個用戶界面,其中用戶挑選他從希望的產品一個DataGridview並且當他選擇它時啓動一個將該項添加到列表中的事件:
private void ProductBrowser_OnItemAdded(Accessoire item)
{
if (Cart.Contains(item))
{
MessageBox.Show("Produit deja ajoutée au panier ! ");
}
else
{
Cart.Add(item);
ProductView.Rows.Add(item.Ref, item.Name, Function.CatName(item.Cat), item.SellPrice, "1", Convert.ToDouble(item.SellPrice) * Convert.ToDouble(item.QtetoSell));
TotalPriceSet();
MessageBox.Show("Produit Ajouté !");
}
}
這不是工作K,但是當我將其更改爲:
private void ProductBrowser_OnItemAdded(Accessoire item)
{
var InList = Cart.Find(product => product.Ref == item.Ref);
if (Cart.Contains(InList))
{
MessageBox.Show("Product already in list ! ");
}
else
{
Cart.Add(item);
ProductView.Rows.Add(item.Ref, item.Name, Function.CatName(item.Cat), item.SellPrice, "1", Convert.ToDouble(item.SellPrice) * Convert.ToDouble(item.QtetoSell));
TotalPriceSet();
MessageBox.Show("product added !");
}
}
它的工作原理,但我'仍然不知道爲什麼第一個代碼does not工作也不斷加入該項目的名單?以其他方式.Contains()
方法如何工作?它是什麼檢查知道該項目是否或列表不是?
除非[另有說明](https://msdn.microsoft.com/en-us/library/bb339118(v = vs.110))。aspx),'Contains'使用「默認比較器」,對於類只是[檢查查看對象是否是同一個引用](https://msdn.microsoft.com/zh-cn/library/system.object .referenceequals(v = vs.110)的.aspx)。 – stuartd
我的猜測是傳入的'Accessoire'對象不完整。您應該在某個地方列出所有產品的列表,並使用傳入的ID獲取完整對象並將該完整對象添加到購物車。 – nurdyguy
什麼是購物車?這些與你的'accessoire'課程有什麼關係? – krillgar