Какую только для чтения и сохраняющую порядок коллекцию в C# я должен использовать для поддержки перечисления?

У меня есть только два требования к структуре данных:

  • Быть только для чтения,
  • Сохранить порядок (я хочу перечислять его в определенном порядке, всегда).

я знаю это IReadOnlyList сохраняет порядок. Я мог бы использовать это, но мне не нужно индексировать. Это означает, что я должен использовать IReadOnlyCollection, К сожалению, я не могу найти информацию, что это сохраняет порядок.

Вы знаете, если это так?

1 ответ

Для получения списка только для чтения вы можете использовать разные подходы.

List<string> list = new List<string>();
IReadOnlyList<string> roList = list;
var roList1 = new ReadOnlyList(list);

roList а также roList1 оба только для чтения, но если вы знаете оригинальный тип roList который List<string> Вы можете разыграть его и изменить коллекцию. Таким образом, второй вариант является лучшим. Чтобы указать, также IEnumerable<string> только для чтения, потому что не предоставляет никаких методов для изменения коллекции (если вы не приведете ее к исходному типу).

По второму вопросу можно сказать, что любой List<T> сохраняет порядок. Если вы не хотите предоставлять способ запроса списка и использовать OrderBy это невозможно при использовании классов, производных от IEnumerable, Это из-за методов расширения. Тем не менее, порядок в экземпляре списка сохраняется, но вы можете запросить. Это не означает, что исходный список был затронут или изменен.

Другие вопросы по тегам