There are actually more types of looping: a classic for-loop, a foreach loop and the explicit use of the enumerator (and also the while and do-while loops). In fact, the foreach and enumerator use are the same: when you write a foreach loop in code, the compiler will use an enumerator “under the hood” for you.
A for-loop is slightly faster (but only noticeable for millions of elements), because it takes less or less complex instructions to increment the index and retrieve the indexed item then it takes to call
A for loop can only be used if there is an index available. I don’t know about the
Ngons member, but it may be that it has no indexing. In that case, using a foreach loop (or as you see the explicit use of an enumerator) is the only possibility.