1

我正在从事一个项目,该项目涉及拥有一组字符,这些字符都具有我想放入表中的不同属性。我创建了一个名为 Character 的类,但我希望能够创建一个数组,其中包含每个属性的名称以及分配给每个属性的整数值。我试图使用嵌套数组来做到这一点,但我在创建一个与整数和字符串混合的数组时遇到了问题。在尝试将标签更改为数组中的元素时,它给了我一个例外,说我无法在字符串的一维数组之间转换为字符串。

想法?

4

1 回答 1

0

如果您使用的是 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 个项目添加到具有可变混合值的列表中,然后从列表中保留第二个项目并循环其值。

于 2013-08-21T03:45:46.183 回答