我正在从事一个项目,该项目涉及拥有一组字符,这些字符都具有我想放入表中的不同属性。我创建了一个名为 Character 的类,但我希望能够创建一个数组,其中包含每个属性的名称以及分配给每个属性的整数值。我试图使用嵌套数组来做到这一点,但我在创建一个与整数和字符串混合的数组时遇到了问题。在尝试将标签更改为数组中的元素时,它给了我一个例外,说我无法在字符串的一维数组之间转换为字符串。
想法?
如果您使用的是 Visual Basic .NET 并且只需要创建字符串/整数对,那么通用字典就是您需要的结构:
Dim aList As New Generic.Dictionary(Of String, Integer)
aList.Add("Attribute1", 123)
aList.Add("Attribute2", 456)
aList.Add("Attribute3", 789)
Dim iValue As Integer = aList("Attribute2") '456
它是强类型的,并且可以通过键轻松访问值。
更新下面是更通用的方法,它可以接受每个给定键的不同类型的可变数量的值。它也在你需要的类中实现。
首先定义一个这样的类:
Public Class MyClass1
Private m_aMyList As Generic.Dictionary(Of String, ArrayList)
Public Property MyList As Generic.Dictionary(Of String, ArrayList)
Get
Return m_aMyList
End Get
Set(ByVal value As Generic.Dictionary(Of String, ArrayList))
m_aMyList = value
End Set
End Property
Public Sub InitList()
m_aMyList = New Generic.Dictionary(Of String, ArrayList)
End Sub
Public Sub AddValuesToList(i_sKey As String, ParamArray i_aValues() As Object)
Dim arrList As New ArrayList
For Each o As Object In i_aValues
arrList.Add(o)
Next
m_aMyList.Add(i_sKey, arrList)
End Sub
Public Function GetListByKey(i_sKey As String) As ArrayList
Return m_aMyList(i_sKey)
End Function
End Class
它定义了一个包含列表的公共属性和 3 个方法 - 初始化列表、向列表添加值以及检索值。
当类像这样定义时,您可以这样使用它:
Dim myObj As New MyClass1
myObj.InitList()
myObj.AddValuesToList("Attribute1", 1, "a", 2, 3, "bbb")
myObj.AddValuesToList("Attribute2", "eee", 34, 23, "aqaa")
myObj.AddValuesToList("Attribute3", 1, 2, 3, 4, 5, "qqq")
For Each o In myObj.GetListByKey("Attribute2")
If TypeOf (o) Is Integer Then
'perform action on integer values
ElseIf TypeOf (o) Is String Then
'perform action on string values
End If
Next
在此示例中,您实例化一个类,初始化列表,将 3 个项目添加到具有可变混合值的列表中,然后从列表中保留第二个项目并循环其值。