| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Вывод текущего элемента масива |
| Автор: N1ko 30.6.2009, 23:42 | ||
|
| Автор: Lirius 1.7.2009, 07:33 | ||
|
| Автор: N1ko 1.7.2009, 18:19 |
| Я извеняюсь. Немного неправильно сформулировал вопрос. Как вывести номер текущего элемента? С названием понятно. |
| Автор: Экскалупатор 1.7.2009, 18:46 |
| N1ko, а просто посчитать? |
| Автор: Экскалупатор 1.7.2009, 20:23 | ||||
если вместо
сделать так:
то номер будет известен постоянно, хотя может можно и через foreach сделать... |
| Автор: N1ko 1.7.2009, 21:15 |
| Я понимаю что так можно сделать. Ещё внутрь foreach можно вставить счётчик, который при каждом прохождении цикла будет наращиваться на один. Но возможно существуют встроенные методы у foreach для выведения текущей позиции? Сколько я не пробовал, не получалось. |
| Автор: Heinzz 1.7.2009, 21:35 | ||
Это вариант без счетчиков |
| Автор: mihryak 1.7.2009, 22:07 |
зато на каждой итерации будет происходить поиск текущего элемента в коллекции. браво! |
| Автор: Экскалупатор 1.7.2009, 23:48 |
http://msdn.microsoft.com/ru-ru/magazine/cc163323.aspx |
| Автор: mihryak 2.7.2009, 12:24 |
нет, не говорил но есть такие способы решения задачи, которые вне зависимости от требований к скорости-памяти будут неприемлимыми. твой способ один из них, извини за прямоту плохой код всегда плохой |
| Автор: gambit 3.7.2009, 09:52 |
| mihryak, как то можно подцепить интерфейс foreach и самому его реализовать, тогда тебе будет доступен индекс текущего эллемента. |
| Автор: Экскалупатор 3.7.2009, 10:01 | ||
вот http://msdn.microsoft.com/ru-ru/magazine/cc163323.aspx написано, (я же уже давал ссылку) |
| Автор: PashaPash 3.7.2009, 14:01 | ||
foreach предназначен для "пробегания" по IEnumerable. По IEnumerable, в общем случае, можно пройти только в одном направлении. Кроме того, IEnumerable не гарантирует что последовательность до и после текущего элемента вообще существуетю. Понятия "текущая позиция" тоже нет, есть только "текущий елемент". Аналог foreach по IEnumerable в реальной жизни - гопник Вася ест семки. Он точно знает что за семка у него в руке (Current). Он так же может взять следующую семку (MoveNext). Но он явно не знает порядковый номер текщей семки. Хочешь текущего индекса при проходе по массиву - используй for. Экскалупатор, по ссылке текущий индекс в ArrayEnumerator - это private-поле в private class. Не слишком удобно. С другой стороны - не зря его так глубоко спрятали. |