解决 IEnumerable 可能的多重枚举警告
在编程中,当 IEnumerable 实例被调用时,就会出现“可能的 IEnumerable 多重枚举”警告。在一个方法内迭代多次。出现此问题的原因是迭代器有状态,后续的枚举可能会产生不同的结果或抛出异常。
在提供的示例代码中:
public List<object> Foo(IEnumerable<object> objects) { // ... }
objects 参数声明为 IEnumerable
替代解决方案
建议的解决方案包括:
最佳解决方案
建议的操作过程取决于方法的具体要求和调用者的预期行为。
如果方法需要一个可以多次枚举的固定集合,建议将参数声明为 IList/ICollection。这清楚地向调用者传达了期望,并防止他们错误地传递一个他们希望仅枚举一次的昂贵对象。
或者,如果该方法必须接受 IEnumerable 并需要多次枚举,则可以接受在方法开始时执行 .ToList() 转换。但是,考虑到潜在的性能影响,应谨慎使用此方法。
需要注意的是,.NET 缺乏专门为可枚举集合设计的接口,该接口具有计数和索引器访问功能,但不具有添加/删除功能,这使得非常适合解决这个问题。
以上是如何处理 C# 中的'可能存在多个 IEnumerable 枚举”警告?的详细内容。更多信息请关注PHP中文网其他相关文章!