Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 20:59   #1
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию Foreach в обратную сторону.

Требуется организовать цикл который будет перебирать объекты, но только в обратную сторону. т.е. сначала идет тот который был добавлен самым последним. Как такое сделать?
P.S. Вот это решение предлагать не надо: For (int i = Mas.count-1;i>=0;i--)
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 12.11.2010, 21:01   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Насколько мне известно, это не возможно.
BOBAH13 вне форума Ответить с цитированием
Старый 12.11.2010, 21:09   #3
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Жалко, придется обходится For
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 12.11.2010, 21:29   #4
Придурь
Новичок
Джуниор
 
Регистрация: 12.11.2010
Сообщений: 2
По умолчанию

http://dotnetperls.com/foreach-reverse
Придурь вне форума Ответить с цитированием
Старый 12.11.2010, 21:31   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Придурь Посмотреть сообщение
Цитата:
Reverse is actually creating a new IEnumerable collection, not simply doing a reverse iteration, making it less efficient.
Уж точно "имеет смысл" это использовать.
BOBAH13 вне форума Ответить с цитированием
Старый 13.11.2010, 10:24   #6
Придурь
Новичок
Джуниор
 
Регистрация: 12.11.2010
Сообщений: 2
По умолчанию

Можно еще так:
Код:
using System.Collections;
using System.Collections.Generic;

namespace System
{
    public sealed class ReverseIterator : IEnumerable
    {
        IList _list;

        public ReverseIterator(IList list) { _list = list; }

        public IEnumerator GetEnumerator()
        {
            int index = _list.Count;
            while (index > 0) yield return _list[--index];
        }
    }

    public sealed class ReverseIterator<T> : IEnumerable<T>
    {
        IList<T> _list;

        public ReverseIterator(IList<T> list) { _list = list; }

        IEnumerator IEnumerable.GetEnumerator() { throw new NotImplementedException(); }

        public IEnumerator<T> GetEnumerator()
        {
            int index = _list.Count;
            while (index > 0) yield return _list[--index];
        }
    }
}
Код:
using System;

namespace ReverseArray
{
    class Program
    {
        static void Main()
        {
            int[] array = { 1, 2, 3 };

            foreach (int value in new ReverseIterator(array))
                Console.WriteLine(value);
            
            foreach (var value in new ReverseIterator<int>(array))
                Console.WriteLine(value);

            Console.ReadKey();
        }
    }
}
Придурь вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пропустить элемент массива в цикле foreach по условию. %$PROregRAMi$t% PHP 0 21.09.2010 06:53
По ту сторону пояса Койпера. docbrain Свободное общение 50 13.05.2010 15:46
Как узнать текущий индекс в foreach boris-blade Общие вопросы .NET 4 25.03.2010 19:26
foreach c двумя массивами sliker PHP 9 26.02.2010 15:36
Суммирование значений foreach Alternavi PHP 2 16.06.2009 19:23