For Each will generate completely different IL to use the IEnumerator interface, so I classify it as another type of loop. While is the same as Do when the condition for the Do is at the start of the loop. So there are 3 and a half.