我在VB.net中有一个名为HashTable
的哈希表,其中填充了Stock
类:
<Serializable()>
Public Class Stock
'Create a structure for the hash table stock file
<VBFixedString(10)> Public Barcode As String
<VBFixedString(20)> Public Category As String
<VBFixedString(20)> Public Title As String
<VBFixedString(20)> Public Description As String
<VBFixedString(4)> Public Quantity As Integer
<VBFixedString(8)> Public RRP As Double
<VBFixedString(8)> Public Cost As Double
End Class
并且,在进行销售时,我想编辑库存数量。如何访问哈希表中的特定库存以更改其属性?
用于识别每只股票的密钥是Stock.Barcode
。
答案 0 :(得分:0)
这也适用于OPTION STRICT,因为它将HashTable中的对象转换为Stock
数据类型:
Dim stockItem = TryCast(myHashTable(myBarcode), Stock)
If stockItem IsNot Nothing Then
stockItem.Quantity -= quantityChange
End If
另外,您可能希望查看Dictionary(Of TKEY, TVALUE)类。它是HashTable的类型安全替代品。在您的情况下,您将声明字典如下:
Dim dict As New Dictionary(Of String, Stock)()
您可以使用ContainsKey - 方法检查某个项目是否可用:
If dict.ContainsKey(myBarCode) Then
dict(myBarCode).Quantity -= quantityChange
End If
答案 1 :(得分:0)
如果Stock.Barcode是HashTable的键,那么您不应该编辑该属性,否则您将失去实际Stock
对象与其关联键之间的同步。您可以更改其他属性:
Dim barcode = "12345";
HashTable(barcode).Category = "New Category"
或者
Dim barcode = "12345"
Dim myStock = HashTable(barcode)
myStock.Category = "New Category"
HashTable(barcode) = myStock