Коллекции C # всегда обеспечивают порядок? - PullRequest
11 голосов
/ 15 августа 2011

IE. Если я хочу выбрать из массива, будет ли результирующий 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?
}

Спасибо!

1 Ответ

15 голосов
/ 15 августа 2011

Да, в этом случае:

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

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

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