向购物车中插入记录项是使用Insert方法实现的
Public Sub Insert(ByVal ProductID As Integer ByVal Price As Double ByVal Quantity As Integer ByVal ProductName As String ByVal ProductImageUrl As String)
Dim NewItem As New CartItem()
NewItemProductID = ProductID
NewItemQuantity = Quantity
NewItemPrice = Price
NewItemProductName = ProductName
NewItemProductImageUrl = ProductImageUrl
_itemsAdd(NewItem)
End Sub
这段程序接受了个参数每个记录项((ID价格等)使用了一个参数这个程序段创建了一个新的Cartltem其属性被设置为这些参数的值一旦设置了所有的参数该记录则被添加到_items集合中并更新时间
Insert方法存在的一个问题是对于同一商品可以多次调用它这样会导致购物车中出现多个相同的商品对于己经在购物车中出现的商品如果只是简单地增加其数量这样看起来会更加明智为了实现这种功能需要搜索该集合查看具有相同ProductID的记录项因此可以创建一个函数来实现
Private Function ItemIndexOfID(ByVal ProductID As Integer) As Integer
Dim index As Integer
For Each item As CartItem In _items
If itemProductID = ProductID Then
Return index
End If
index +=
Next
Return
End Function
该函数使用ProductID作为参数并返回一个Integer值该函数循环遍历_items集合如果某个记录项的ProductID与提供的ProductlD匹配则使用Return语句返回其索引号如果循环结束后还没有发现匹配则返回注意该函数被标记为Private;这是因为在该类的外部不能使用它
现在Insert方法可以修改如下
Public Sub Insert(ByVal ProductID As Integer ByVal Price As Double ByVal Quantity As Integer ByVal ProductName As String ByVal ProductImageUrl As String)
Dim ItemIndex As Integer = ItemIndexOfID(ProductID)
If ItemIndex = Then
Dim NewItem As New CartItem()
NewItemProductID = ProductID
NewItemQuantity = Quantity
NewItemPrice = Price
NewItemProductName = ProductName
NewItemProductImageUrl = ProductImageUrl
_itemsAdd(NewItem)
Else
_items(ItemIndex)Quantity +=
End If
_lastUpdate = DateTimeNow()
End Sub
该方法使用了相同的参数但首先是调用私有变量ItemIndexOfID来获取当前商品的索引号如果索引号为那么集合中没有包含该记录项则添加进来如果已经存在那么将增加其Quantity
[] [] [] [] [] [] [] []