"За каждый" счетчик VB.NET

Есть ли цикл For Each в Visual Basic счетчик итераций, или я должен сам это сделать?

Ответ 1

К сожалению, вы должны сделать это сами. Конструкция For Each использует реализацию IEnumerator для итерации последовательности, а интерфейс IEnumerator не предоставляет никаких членов для указания своих позиции или текущего индекса в последовательности.

Ответ 2

Если мне нужна переменная итератора, я использую вместо этого цикл for (каждый IEnumerable должен иметь свойство .Count).

Вместо

For Each element as MyType in MyList
    ....
Next

записи

For i as integer = 0 to MyList.Count - 1
    element = MyList(i)
    ....
Next

который будет тем же самым результатом. У вас есть i как итератор, а element содержит текущий элемент.

Ответ 3

Если вы используете Visual Studio 2009 (или VB.Net 9.0), вы можете использовать опцию Select override, чтобы получить счет со значениями.

For Each cur in col.Select(Function(x,i) New With { .Index = i, .Value = x })
 ...
Next

Ответ 4

Вам придется делать это сами. В основном, если вы делаете для каждого (foreach в С#), то вам не нужно учитывать количество итераций.

Ответ 5

Циклы forach для каждого элемента M, который он находит в коллекции из M элементов.

Итак, нет, нет явного подсчета итераций, как в цикле FOR.