我对使用二维数组有疑问。
Public twolist(,) As String
For i As Integer = 0 To twolist.length()-1
If Func(twolist(i, )) Then 'this part is hard for me
'doing something
End If
Public Function Func(ByVal CancelInput() As String) As Boolean
我想要做的是将二维数组传递给数组。 我想在二维数组中读取一行并传递给使用数组的函数(Func)。
希望你能理解我的问题......谢谢!
答案 0 :(得分:0)
我刚刚为你的数组使用了任意大小。您需要嵌套的For循环来迭代2维数组。外部循环遍历行,内部循环将每个字段中的值添加到要传递给Function的另一个数组。每行作为单维数组单独传递。
Private Sub TwoDimensionalArray()
Dim twolist(,) As String
ReDim twolist(10, 5)
'First you will need to add data to your array
For x As Integer = 0 To 10
Dim arrayRow(5) As String
For y As Integer = 0 To 5
arrayRow(y) = twolist(x, y)
Next
If Func(arrayRow) Then 'this part is hard for me
'doing something
End If
Next
End Sub
Public Function Func(ByVal CancelInput() As String) As Boolean
Return True
End Function
答案 1 :(得分:0)
作为For Next
循环的替代方案,您可以使用Linq(如果您对它很有帮助)来执行相同的任务。
这会将源数组的每个元素转换为String,将它们分组在IEnumerable(Of String)
中,并将结果转换为一维的字符串数组:
Dim twolist(N, N) As String
Dim CancelInput() As String = twolist.Cast(Of String).Select(Function(str) str).ToArray()
Dim result As Boolean = Func(CancelInput)
答案 2 :(得分:0)
玛丽的答案很好,但假设你知道每个维度的长度。
我稍微改了一下以使用Array.GetLength函数:
Private Sub TwoDimensionalArray()
Dim twolist(,) As String
ReDim twolist(10, 5)
'First you will need to add data to your array
For x As Integer = 0 To 10
'Fetch the length of this dimension:
Dim i As Integer = twolist.GetLength(x)
Dim arrayRow(i) As String
For y As Integer = 0 To i - 1
arrayRow(y) = twolist(x, y)
Next
If Func(arrayRow) Then
'do something
End If
Next
End Sub
Public Function Func(ByVal CancelInput() As String) As Boolean
Return True
End Function
注意: 在VB.Net中,ReDim twoList(10,5)实际上为你提供了一个(11,6)的数组。 Array.GetLength(0)将返回6(0,1,2,3,4,5)。 简而言之,Dim指定每个维度中的最大索引,长度& GetLength返回元素数。