解決IEnumerable 可能的多重枚舉警告
在程式設計中,當IEnumerable 實例被呼叫時,就會出現「可能的IEnumerable多重枚舉”警告。在一個方法內迭代多次。出現此問題的原因是迭代器有狀態,後續的枚舉可能會產生不同的結果或拋出異常。
在提供的範例程式碼中:
public List<object> Foo(IEnumerable<object> objects) { // ... }
objects 參數宣告為IEnumerable
替代解決方案
建議的解決方案包括:
此解決方案涉及將整個 IEnumerable 複製到新列表,這在某些情況下可能效率低下且笨拙。
最佳解決方案
建議的操作過程取決於方法的特定要求和調用者的預期行為。 如果方法需要一個可以多次枚舉的固定集合,建議將參數宣告為 IList/ICollection。這清楚地向呼叫者傳達了期望,並防止他們錯誤地傳遞一個他們希望僅列舉一次的昂貴物件。 或者,如果方法必須接受 IEnumerable 並需要多次枚舉,則可以接受在方法開始時執行 .ToList() 轉換。但是,考慮到潛在的性能影響,應謹慎使用此方法。 需要注意的是,.NET 缺乏專門為可枚舉集合設計的接口,該接口具有計數和索引器訪問功能,但不具有添加/刪除功能,這使得非常適合解決這個問題。以上是如何處理 C# 中的「可能存在多個 IEnumerable 枚舉」警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!