更改HashTable中对象的属性

时间:2014-03-10 12:14:49

标签: vb.net class object hashtable

我在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

2 个答案:

答案 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