Перейти к содержанию

Как получить индекс текущей итерации цикла foreach [C#]

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


Для получения индекса текущей итерации цикла foreach, можно воспользоваться несколькими вариантами, рассмотрим их.

Foreach предназначен для итерации над коллекциями, которые реализуют IEnumerable. Для этого нужно вызвать GetEnumerator для коллекции, который вернет Enumerator.

Перечислитель имеет метод и свойство:

  • MoveNext()
  • Current

Current возвращает объект, на котором в данный момент находится Enumerator, MoveNext обновляет Current до следующего объекта.

Концепция индекса чужда концепции перечисления и не может быть выполнена.

Поэтому большинство коллекций можно обойти с помощью индексатора и конструкции цикла for.

Я предпочитаю использовать цикл for в этой ситуации, чем отслеживать индекс с помощью локальной переменной, как в этом примере:

Лучше использовать цикл for:

Так же, в C#7 появился достойный синтаксис для получения индекса внутри цикла foreach (т.е. кортежей). Для этого примера потребуется определить собственный метод расширения:

 

 

Опубликовано в рубрикеОтветы на Вопросы C#
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x