我有很多resharper警告将我的参数从常规数组更改为相同类型的IEnumerable,因此它会改变这一点:
public Interface IGenerator
{
void Go(MyObject[] objects)
}
到此:
public Interface IGenerator
{
void Go(IEumerable<MyObject> objects)
}
如果我去改变所有这些,那么我随时都会收到其他警告。在我的函数里面的那个()上面有警告:
Possible multiple enumeration of IEnumerable
我看到这个error description,但是在这里,这些已经是数组,因此不是自定义查询。
那么推荐做法是什么?我应该把它作为数组保存还是在整个地方添加.ToList()来删除多个可枚举的错误
答案 0 :(得分:1)
“多枚举”不是错误,它是一个警告(如果我没有记错的话,重新锐化警告)。如果你确定你传递了“物化”集合(而不是懒散地获得的集合,例如通过yield return
其结果的函数),你可以忽略它。
IEumerable<MyObject>
是有意义的,因为您想要传递各种LINQ函数的结果,请在方法中转换ToList
。ICollection<MyObject>
代替IEumerable<MyObject>
。