Вопрос: Коллекции C # всегда обеспечивают порядок?


И.Е. Если я хочу выбрать из массива, это результат IEnumerable<object> объект обязательно в порядке?

public class Student { public string FullName, ... }
public class School { public string Name, public Student[] Students, ... }

public void StudentListWork(School thisSchool)
{
    IEnumerable<string> StudentNames = thisSchool.Students.Select(student => student.FullName);

    // IS StudentNames GUARANTEED TO BE IN THE SAME ORDER AS thisSchool.Students?
}

Благодаря!


10


источник


Ответы:


Да, в это  дело:

  • Массивы возвращают элементы в натуральном порядке
  • Enumerable.Select возвращает элементы в порядке исходной последовательности (после проецирования, конечно)

Некоторые коллекции не  сохранить порядок. В частности:

  • Коллекции, такие как HashSet<T> а также Dictionary<TKey, TValue> не дают никаких гарантий относительно порядка, в котором возвращаются значения
  • Коллекции, такие как SortedSet<T> а также SortedDictionary<TKey, TValue> применять гарантированный заказ на основе предметов, размещенных внутри них

15