У меня есть коллекция предметов под названием RegisteredItems. Меня не волнует порядок элементов в RegisteredItems, только то, что они существуют.
Я выполняю два типа операций с RegisteredItems:
- Найти и вернуть товар по имуществу.
- Перебор коллекции и побочный эффект.
Согласно: Когда мне следует использовать тип HashSet ? Роберт Р. говорит:
"Перебирать HashSet несколько опасно, потому что
накладывает порядок на предметы в наборе. Этот порядок на самом деле не
свойство множества. Вы не должны полагаться на это. При заказе
предметы в коллекции важны для вас, эта коллекция не
установлен. "
Есть несколько сценариев, в которых моя коллекция будет содержать 50-100 предметов. Я понимаю, что это не большое количество элементов, но я все еще надеялся пожинать плоды использования HashSet вместо List.
Я обнаружил, что смотрю на следующий код и задаюсь вопросом, что делать:
LayoutManager.Instance.RegisteredItems.ToList().ForEach( item => item.DoStuff() );
vs
foreach( var item in LayoutManager.Instance.RegisteredItems)
{
item.DoStuff();
}
RegisteredItems раньше возвращал IList<T>
, но теперь он возвращает HashSet. Я чувствовал, что, если бы я использовал HashSet для эффективности, было бы неправильно разыграть его как Список. Тем не менее, приведенная выше цитата Роберта заставляет меня чувствовать себя неловко и из-за итерации.
Какой правильный вызов в этом сценарии? Спасибо