Обработка предупреждения о возможном многократном перечислении IEnumerable

В моем коде мне нужно использовать IEnumerable <> несколько раз, поэтому возникает ошибка Resharper «Возможное множественное перечисление IEnumerable ".

Пример кода:

public List<object> Foo(IEnumerable<object> objects)
{
    if (objects == null || !objects.Any())
        throw new ArgumentException();

    var firstObject = objects.First();
    var list = DoSomeThing(firstObject);        
    var secondList = DoSomeThingElse(objects);
    list.AddRange(secondList);

    return list;
}
  • Я могу изменить параметр objects на List , а затем избежать возможного множественного перечисления, но тогда я не получаю самый высокий объект, с которым я могу справиться.
  • Еще одна вещь, которую я могу сделать, - это преобразовать IEnumerable в List в начале метода:

 public List<object> Foo(IEnumerable<object> objects)
 {
    var objectList = objects.ToList();
    // ...
 }

Но это просто неудобно .

Что бы вы сделали в этом сценарии?

337
задан John Saunders 22 February 2015 в 21:03
поделиться