-1

我在for循环中有一个for each循环,for each循环检查当前行中某列中的值是否存在于数组中,如果存在我想在for循环中做什么,如果它不存在我想要继续 for 循环

for i = 0 To DataGridView1.RowCount - 1
        For Each id In IDs
            If (DataGridView1.Item(1, i).Value <> id) Then
               'continue the for loop, by continue i mean using continue statement and not executing the outer for loop for this case
            End If
        Next
  'do for loop things
Next

我要做的是对具有特定 id 的行进行计算,并跳过具有不在数组中的 id 的行。

4

5 回答 5

1

您可以使用 Exit For 退出内部 For Each 循环。外部的 For 循环将在它停止的地方恢复。

退出

选修的。将控制转移出 For Each 循环。

当在嵌套的 For Each 循环中使用时,Exit For 会导致执行退出最内层循环并将控制转移到下一个更高级别的嵌套。

http://msdn.microsoft.com/en-us/library/5ebk1751.aspx

for i = 0 To DataGridView1.RowCount - 1
        For Each id In IDs
            If (DataGridView1.Item(1, i).Value <> id) Then
               Exit For 'continue the for loop
            End If
        Next
  'do for loop things
Next
于 2012-08-09T05:27:36.907 回答
1

您是否只想在匹配时“执行循环操作”?为什么不只是这样?

For i = 0 To DataGridView1.RowCount - 1 
    doThings = False
   For Each id In IDs
      If (DataGridView1.Item(1, i).Value = id) Then 
        doThings = True
        Exit For
      End If 
  Next 
  If doThings Then 
    ** do for loop things 
  End If 
Next 

可以通过创建更多方法来改进

  • 一个函数来确定一个 id 是否出现在“IDs”中。它是一个列表吗?你可以使用 IDs.Contains()
  • 一种“为循环做事”的方法
于 2012-08-09T05:39:02.207 回答
0

与其检查不相等的条件,不如检查相等的条件。

for i = 0 To DataGridView1.RowCount - 1         
    For Each id In IDs             
        If (DataGridView1.Item(1, i).Value == id) Then
            'continue the for loop
        End If
    Next
    'do for loop things 
Next 
于 2012-08-09T05:27:52.407 回答
0

退出语句 (Visual Basic) - MSDN

for i = 0 To DataGridView1.RowCount - 1
    For Each id In IDs
        If (DataGridView1.Item(1, i).Value <> id) Then
           Exit For ' Exit this For Each loop
        End If
    Next
'do for loop things
Next
于 2012-08-09T05:28:27.670 回答
0

doThings答案很好且可读,但要实际使用 aContinue For您需要将内部循环更改为For可用于 VB.NET 的其他循环之一。

for i = 0 To DataGridView1.RowCount - 1
    Using EnumId As IEnumerator(Of String) = IDs.GetEnumerator
        'For Each id In IDs
      While EnumId.MoveNext
        Dim id = EnumId.Current
            If (DataGridView1.Item(1, i).Value <> id) Then
               'continue the for loop, by continue i mean using continue statement and not executing the outer for loop for this case
               Continue For
            End If
        'Next
      End While
    End Using
  'do for loop things
Next

(在 IDE 中输入时未检查语法。)

于 2012-09-06T08:27:29.860 回答