将数组名称传递给VB.net中的子目录

时间:2017-04-10 09:36:40

标签: arrays vb.net

我需要您的帮助以解决我无法找到浏览网页的任何解决方案的问题。 我在程序中有很少的子程序,所有这些都在生成自己的数组。 类似的东西:

Private Sub SubName1()
   Array1(0,0) = 1
   Array1(0,1) = 2
End Sub

Private Sub SubName2()
   Array2(0,0) = 3
   Array2(0,1) = 4
End Sub

...

接下来我需要做的是调用另一个Sub传递一个预定义数组的名称。 类似的东西:

...
If this = that then
    FinalSub(Array1)
Else
    FinalSub(Array2)
End if
...

Private Sub FinalSub(CalledArray() as string)
    DoSomethingWith(CalledArray(0,1)
End Sub

我找不到如何做到这一点......我对如何实现这一点有什么想法? (我希望我的问题清楚明确):))

非常感谢。 文斯。

3 个答案:

答案 0 :(得分:0)

使用Dictionary(Of String, Integer(,))

Dim myArrays = New Dictionary(Of String, Integer(,))()
myArrays.Add("Array1", New Integer(,) {{1, 2}}
myArrays.Add("Array2", New Integer(,) {{3, 4}}

然后使用它

If this = that then
    FinalSub(myArrays("Array1"))
Else
    FinalSub(myArrays("Array2"))
End if

对于这个特定示例,您根本不需要名称,因为您可以通过其实例创建访问数组。

答案 1 :(得分:0)

从外观上看,您试图将数组中的值传递给不同的子/函数。这可以像移动数组的声明语句一样容易地完成。而不是在Sub / Function中声明它们,而是将它们声明为Class变量。如果在任何Sub / Function之外声明它们,则该类中的任何Sub / Function都可以使用它们及其包含的变量。

Public Class Test
    Dim array1 As Array
    Sub TestSub1()
        'can use array1'
    End Sub
    Sub TestSub2()
        'can use array1'
    End Sub
End Class

对战

Public Class Test
    Sub TestSub1()
        Dim array1 As Array
        'can use array1'
    End Sub
    Sub TestSub2()
        'cannot use array1'
    End Sub
End Class

https://msdn.microsoft.com/en-us/library/527aztek.aspx

答案 2 :(得分:-1)

好的......我找到了一个简单易用的解决方案,可以称之为"傻瓜的解决方案" LOL ...

我没有使用2D数组,而是使用3D数组,我使用第一列来识别每个原始数组。

而不是

Array1(0,0) = 1
Array1(0,1) = 2
Array2(0,0) = 3
Array2(0,1) = 4

我正在使用

My3dArray(1,0,0) = "Array1"
My3dArray(1,1,0) = "1"
My3dArray(1,1,1) = "2"
My3dArray(2,0,0) = "Array2"
My3dArray(2,1,0) = "3"
My3dArray(2,1,1) = "4"

所以我只需要调用我的sub指定第一列ref。

FinalSub(1) ' to call the first set of values
FinalSub(2) ' To call the second set of values

Private sub FinalSub(id as integer)
    DoSomethingWith(My3dArray(ID,1,1))
End Sub

可能不是最好和最优雅的方式,但它有效:)

无论如何,谢谢你的回答和评论。

此致  文斯。