Есть ли цикл For Each
в Visual Basic счетчик итераций, или я должен сам это сделать?
"За каждый" счетчик VB.NET
Ответ 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.