#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);
}
Итак, с вашим текущим кодом я не вижу, в чем может быть проблема.