VB.NET - 각 루프에 대해 다음 항목 a로 이동하는 방법?
다음과 같은 진술이 있습니까?Exit For
루프를 벗어나는 대신 다음 항목으로 이동합니다.
예:
For Each I As Item In Items
If I = x Then
' Move to next item
End If
' Do something
Next
나는 간단히 추가할 수 있다는 것을 압니다.Else
If 문에 다음과 같이 표시됩니다.
For Each I As Item In Items
If I = x Then
' Move to next item
Else
' Do something
End If
Next
다음 항목으로 건너뛰는 방법이 있는지 궁금합니다.Items
목록입니다. 대부분이 왜 그냥 사용하지 않는지 제대로 물어볼 것입니다.Else
하지만 "Do Something" 코드를 포장하는 것은 덜 읽을 수 있는 것처럼 보입니다.특히 코드가 훨씬 많을 때는 더욱 그렇습니다.
For Each I As Item In Items
If I = x Then Continue For
' Do something
Next
나는 사용할 것입니다.Continue
대신 진술:
For Each I As Item In Items
If I = x Then
Continue For
End If
' Do something
Next
이는 반복기 자체를 이동하는 것과는 약간 다르다는 점에 유의하십시오. 즉, 반복기 자체를 위로 이동하는 것입니다.If
다시 실행됩니다.보통 이것이 당신이 원하는 것이지만, 그렇지 않다면 당신은 사용해야 할 것입니다.GetEnumerator()
그리고 나서.MoveNext()
/Current
를 사용하는 것보다 명시적으로.For Each
고리.
다음은 어떻습니까?
If Not I = x Then
' Do something '
End If
' Move to next item '
내가 노력했을때Continue For
실패했습니다. 컴파일러 오류가 발생했습니다.이 작업을 수행하는 동안 '다시 시작'을 발견했습니다.
For Each I As Item In Items
If I = x Then
'Move to next item
Resume Next
End If
'Do something
Next
참고: 여기서 VBA를 사용합니다.
다음 코드가 좋은 관행이 아니라는 것을 분명히 하고 싶습니다.GOTO 라벨을 사용할 수 있습니다.
For Each I As Item In Items
If I = x Then
'Move to next item
GOTO Label1
End If
' Do something
Label1:
Next
"계속"만 허용되는 표준입니다(나머지는 "스파게티 코드"로 이어집니다)
적어도 "continue for"를 사용하면 프로그래머는 코드가 루프의 맨 위로 직접 이동한다는 것을 알 수 있습니다.
하지만 순수주의자들에게는 이것이 순수한 "스파게티가 아닌" 코드이기 때문에 이와 같은 것이 가장 좋습니다.
Dim bKeepGoing as Boolean
For Each I As Item In Items
bKeepGoing = True
If I = x Then
bKeepGoing = False
End If
if bKeepGoing then
' Do something
endif
Next
코딩의 용이성을 위해 "Continue For"(계속)는 괜찮습니다. (하지만 주석을 다는 것은 좋은 생각입니다.)
"계속" 사용
For Each I As Item In Items
If I = x Then
Continue For 'skip back directly to top of loop
End If
' Do something
Next
언급URL : https://stackoverflow.com/questions/829689/vb-net-how-to-move-to-next-item-a-for-each-loop
'programing' 카테고리의 다른 글
몽구스 & 고유 필드 (0) | 2023.05.28 |
---|---|
7번째 항목에서 SQL Server 2012 열 ID가 6개에서 1000개 이상으로 증가 (0) | 2023.05.28 |
Python 3.7 아나콘다 환경 - 가져오기 _ssl DLL 로드 실패 오류 (0) | 2023.05.28 |
Xcode가 시작 화면을 다시 표시하도록 하는 방법은 무엇입니까? (0) | 2023.05.28 |
postgresql의 IF-THEN-ELSE 문 (0) | 2023.05.28 |