Навигация по общему списку коллекций в c # - PullRequest
2 голосов
/ 16 февраля 2010

У меня есть коллекция объектов в общем списке.

Мне интересно, как лучше всего ориентироваться в этой коллекции. Я хочу сделать такие операции, как «MoveNext», «MovePrevious» и т. Д.

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

Существует ли c # эквивалент MoveNext и MovePrevious в Sql

Ответы [ 5 ]

6 голосов
/ 16 февраля 2010

Вы можете использовать LinkedList класс.
Каждый элемент имеет ссылку на предыдущий и следующий.
Проверьте ссылку на документацию для примеров.

3 голосов
/ 16 февраля 2010

Просто добавьте свойство Current в свой список.

не проверено. просто выглядит правильно.

и есть охранник, который вы должны установить по своему вкусу, например начальный индекс. Вы должны начать с -1 и требовать movenext? до вас

   public class BackAndForthList<T> : List<T>
    {
        private int _current = 0;

        public T Current
        {
            get { return this[_current]; }
        }

        public void MoveNext()
        {
            _current++;
            if (_current >= Count)

            {
                _current = 0;
            }
        }

        public void MovePrevious()
        {
            _current--;

            if (_current < 0)
            {
                _current = Count - 1;
            }
        }
    }
1 голос
/ 16 февраля 2010

Для продвижения вперед вы можете использовать перечислитель:

list.GetEnumerator().MoveNext()
0 голосов
/ 16 февраля 2010

Используйте BindingList или BindingSource или производите свои собственные от любого.

0 голосов
/ 16 февраля 2010

Мне не известны встроенные функции для этого, но вы можете сделать это очень просто, имея переменную, содержащую индекс. Когда вы хотите MoveNext, тогда i ++, а когда вы хотите MovePrevious, используйте i-- (при условии, что вы используете i в качестве переменной).

РЕДАКТИРОВАТЬ: я был не прав. Вот фрагмент из MSDN, который делает то, что вы просите. Я не углублялся в это, но это было в статье о StringCollections

public static void PrintValues2( StringCollection myCol )  {
      StringEnumerator myEnumerator = myCol.GetEnumerator();
      while ( myEnumerator.MoveNext() )
         Console.WriteLine( "   {0}", myEnumerator.Current );
      Console.WriteLine();
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...