Порядок элементов, не измененный после перемещения объектов внутри списка с помощью удаления и добавления

#c# #list #element #move

#c# #Список #элемент #переместить

Вопрос:

кажется, что старые индексы сохраняются при перемещении элементов в коллекции, как я могу гарантировать, что элементы будут повторяться в новом порядке с новым индексом после перемещения?

Сначала я перемещаю элементы в обычном списке:

 elements.Remove(src);
int index = elements.IndexOf(target);
elements.Insert(index,src);
  

а затем запустите цикл foreach

 foreach(Element _element in elements){ /* enter code here*/ } 
  

и он сохранит элементы в том порядке, в котором они были до перемещения.

Комментарии:

1. Я проголосовал против, потому что ваш вопрос очень сложно понять. если вы это исправите, я дам вам право голоса вместо этого.

2. переформатировали код — вы имели в виду Элементы / elements — предположительно, это один и тот же объект, просто опечатка с заглавной буквы?

3. Опубликованный вами пример кода не помогает продемонстрировать проблему. Вообще говоря, список не запоминает волшебным образом индекс ранее удаленного элемента и не использует этот индекс вместо переданного для вставки

Ответ №1:

Я протестировал вашу проблему с этим кодом, и он записывает в консоль 0 1 2 3 5 6 4 7 8 9 как и ожидалось.

         List<string> elements = new List<string>();

        for (int i = 0; i < 10; i  )
        {
            elements.Add(i.ToString());
        }

        string src = "4";
        string target = "7";

        elements.Remove(src);

        int index = elements.IndexOf(target);
        elements.Insert(index, src);

        foreach (string e in elements)
        {
            Console.Write("{0} ", e);
        }
  

Итак, с вашим текущим кодом я не вижу, в чем может быть проблема.