在我的代码中,我需要多次使用IEnumerable<>
,导致"可能多次枚举IEnumerable
"的ReSharper错误.
示例代码:
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();
// ...
}
但这只是awkward.
在这种情况下你会怎么做?