VB.net如何访问二维数组中的行



我想在VB.NET中从二维数组中读取第一行的所有元素。有没有一种简单的方法可以做到这一点,而不是运行循环。我知道在MATLAB中有可能说:A(1,:)和它完成了。非常感谢。

如果没有循环,数组本身就无法读取任何内容,但您可以使用LINQ查询,例如

Dim firstRow = Enumerable.Range(0, myArray.GetUpperBound(1) + 1).
Select(Function(i) myArray(0, i))

请注意,什么是";行";什么是";列";不是为2D阵列定义的,所以你想使用这个还是这个真的取决于你:

Dim firstRow = Enumerable.Range(0, myArray.GetUpperBound(0) + 1).
Select(Function(i) myArray(i, 0))

这为您提供了一个指定元素的可枚举列表,所以问题是,您想如何处理它?你实际上还没有具体说明。实际上,你所能做的就是枚举它,这意味着在它上面运行一个For Each循环。这有点违背了最初避免循环的目的。如果你说,而不是实际说,你想要这些元素在1D数组中,那么你可以调用ToArray:

Dim firstRow = Enumerable.Range(0, myArray.GetUpperBound(1) + 1).
Select(Function(i) myArray(0, i)).
ToArray()

编辑:

这里有一个扩展方法,你可以用来做这项工作:

Imports System.Runtime.CompilerServices
Public Module ArrayExtensions
<Extension>
Public Function GetRow(Of T)(source As T(,), rowIndex As Integer) As T()
Return Enumerable.Range(0, source.GetUpperBound(1) + 1).
Select(Function(i) source(rowIndex, i)).
ToArray()
End Function
End Module

然后,它会使调用代码更加干净,尤其是当您需要多次调用时,例如

Dim firstRow = myArray.GetRow(0)

如果您不知道数组的大小,您可以使用嵌套循环For Each,如下所示:

For each row in array
For each col in row
''something here like Debug.Write(col.ToString)
Next
Next

如果你知道你的大小,并且你想要数组中的特定项目,你只需像在任何其他循环中一样这样做";对于";像这样:

For index As Integer = 5 To 5
For index2 As Integer = 3 To 3
Debug.Write(index2.ToString)
Next
Next

最新更新