我正在编写一个循环来遍历2D循环的第一个数组,我现在有这样的:
For Each Dir_path In MasterIndex(,0) 'do some stuff here Next
但它给了我一个错误,说它希望在第一个字段中有一个表达式.但这就是我想要做的,循环通过第一个字段.我该如何解决?我会在那里放什么?
编辑:澄清一下,我特意在每个数组的子数组中寻找第0个元素,这就是第二个字段始终为0的原因.
您可以使用嵌套的For循环来完成此操作
注意:使用For Each循环迭代数组中的元素时,每次迭代生成的占位符都是实际数组中值的副本.对该值的更改不会反映在原始数组中.如果您想要执行除读取信息之外的任何操作,则需要使用For循环直接寻址数组元素.
假设二维数组,以下代码示例将为每个维度中的每个元素分配一个值.
Dim MasterIndex(5,2) As String For IoUter As Integer = MasterIndex.GetLowerBound(0) To MasterIndex.GetUpperBound(0) 'IoUter represents the first dimension For iInner As Integer = MasterIndex.GetLowerBound(1) To MasterIndex.GetUpperBound(1) 'iInner represents the second dimension MasterIndex(IoUter,iInner) = "This Isn't Nothing" 'Set the value Next 'iInner 'If you are only interested in the first element you don't need the inner loop MasterIndex(IoUter,0) = "This is the first element in the second dimension" Next 'IoUter 'MasterIndex is now filled completely
您可以选择使用.Rank属性动态迭代每个维度
如果你想循环一个锯齿状的数组,就像Konrad Rudolph所建议的那样(这在函数上更接近地匹配其他更松散类型的语言,如PHP的数组实现),你可以像这样:
'This is a jagged array (array of arrays) populated with three arrays each with three elements Dim JaggedIndex()() As String = { New String() {"1","2","3"},New String() {"1","3"} } For Each aOuter As String() In JaggedIndex 'If you are only interested in the first element you don't need the inner for each loop Dim sDesiredValue As String = aOuter(0) 'This is the first element in the inner array (second dimension) For Each sElement As String In aOuter Dim sCatch As String = sElement 'Assign the value of each element in the inner array to sCatch sElement = "This Won't Stick" 'This will only hold value within the context of this loop iteration Next 'sElement Next 'aOuter 'JaggedIndex is still the same as when it was declared