Каковы сценарии, в которых вы выполняете цикл от 0 до конца списка (список или Карта) и какие сценарии вы начинаете с конца до 0? Вот фрагмент кода, который выполняет итерацию по списку от 0 до конца, чтобы отфильтровать некоторые конкретные имена учеников. Предоставляет ли этот код любое исключение в любом сценарии? Выполняет ли итерирование с конца списка до нуля, делает какой-либо разницей в этом коде?Когда цикл от 0 до конца и когда цикл от конца до 0?
List<Dictionary<string, string>> allStudentsList = allStudentsArray.ToList();
for (int i = 0; i < allStudentsList .Count-1; i++) {
Dictionary<string, string> student= allStudentsList .ElementAt(i);
string studentName;
bool hasValue = studentName.TryGetValue("id", out studentName);
if (hasValue) {
if (studentName.StartsWith("John") {
allStudentsList.RemoveAt(i);
i--;
}
}
}
Полагая это как комментарий, поскольку он не связан с вашим вопросом, но вы должны заменить elementat (i) просто индексированием в списке.ElementAt - это оператор linq, поэтому он оптимизирован для списка (и вы добавляете только служебные данные метода), либо он не имеет определенного списка, а затем вызывает значительное замедление, потому что ему нужно перебирать весь список каждый раз до индекс для поиска элемента. –