首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在VB.Net中创建和循环多维数组?

如何在VB.Net中创建和循环多维数组?
EN

Stack Overflow用户
提问于 2014-10-02 23:25:24
回答 3查看 1.7K关注 0票数 0

我正试图在VB.net中完成以下工作:

代码语言:javascript
运行
复制
' Create multidimensional array holding parents and childs 

[100] Parent1
    [101] Child1
    [102] Child2
[200] Parent2
    [201] Child1
[300] Parent3
    [301] Child1
    [302] Child2
    [303] Child3

' Loop through multidimensional array

For Each Parent in Array
    Print parent_id parent_name

    For each Child in Parent
        Print child_id child_name
    Next
Next

然后,产出应是:

代码语言:javascript
运行
复制
100 Parent1
101 Child1
102 Child2
200 Parent2
201 Child1
300 Parent1
301 Child1
302 Child2
303 Child3

我知道在BV.net中创建的一维数组如下:

代码语言:javascript
运行
复制
Dim Parents As New Dictionary(Of Integer, String) From { 
    {100, "Parent1"}, 
    {200, "Parent2"},
    {300, "Parent3"}
}

但是,我想不出如何把这个扩展到同时容纳孩子们。

问题1:如何更新上面的数组以同时保存每个父项的子级?

每个循环都是用伪代码编写的。

问题2:如何循环多维数组以获得所需的输出?

EN

Stack Overflow用户

发布于 2014-10-03 03:31:09

这不是一个非常有效的解决方案--它将每个家庭成员与其他每个家庭成员进行比较。但是,它可以满足您的需要,并且应该教您一些关于数组如何工作的知识。

代码语言:javascript
运行
复制
  Sub ShowFamily()
    Dim strFamily(-1, -1) As String '0-based (indices start at zero). first index is the person, second index are the properties associated with the person
    '(*, 0) = Person's name
    '(*, 1) = Person's ID
    '(*, 2) = Person's parent's ID

    '1. Fill array with data
    Call LoadFamily(strFamily)
    '2. Go through the array looking for family members that have no parents
    For i As Integer = 0 To strFamily.GetUpperBound(0)
      If strFamily(i, 2) = "" Then
        '3. Found a parent. Output their name
        Debug.WriteLine(String.Format("{0} {1}", strFamily(i, 1), strFamily(i, 0)))
        '4. Go through the array a second time, looking for this parent's children
        For j As Integer = 0 To strFamily.GetUpperBound(0)
          If strFamily(j, 2) = strFamily(i, 1) Then 'compare child's parent ID with parent's ID - do they match?
            'found a match - output the child
            Debug.WriteLine(String.Format("    {0} {1}", strFamily(j, 1), strFamily(j, 0)))
          End If
        Next j
      End If
    Next i
  End Sub

  Sub LoadFamily(ByRef strFamily(,) As String)
    ReDim strFamily(9, 2) '9 members
    strFamily(0, 0) = "Parent1"
    strFamily(0, 1) = "100"
    strFamily(0, 2) = "" 'no parent
    '
    strFamily(1, 0) = "Parent1Child1"
    strFamily(1, 1) = "101"
    strFamily(1, 2) = "100" 'Parent1
    '
    strFamily(2, 0) = "Parent1Child2"
    strFamily(2, 1) = "102"
    strFamily(2, 2) = "100" 'Parent1
    '
    strFamily(3, 0) = "Parent2"
    strFamily(3, 1) = "200"
    strFamily(3, 2) = "" 'no parent
    '
    strFamily(4, 0) = "Parent2Child1"
    strFamily(4, 1) = "201"
    strFamily(4, 2) = "200" 'Parent2
    '
    strFamily(5, 0) = "Parent3"
    strFamily(5, 1) = "300"
    strFamily(5, 2) = "" 'no parent
    '
    strFamily(6, 0) = "Parent3Child1"
    strFamily(6, 1) = "301"
    strFamily(6, 2) = "300" 'Parent3
    '
    strFamily(7, 0) = "Parent3Child2"
    strFamily(7, 1) = "302"
    strFamily(7, 2) = "300" 'Parent3
    '
    strFamily(8, 0) = "Parent3Child3"
    strFamily(8, 1) = "303"
    strFamily(8, 2) = "300" 'Parent3
    'Add a third child to parent 1, to demonstrate that we are actually matching parents to children
    strFamily(9, 0) = "Parent1Child3"
    strFamily(9, 1) = "103"
    strFamily(9, 2) = "100" 'Parent1
  End Sub
票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26171163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档