Resharper: 可能对 IEnumerable 进行多次枚举
- 论坛
- Resharper: 可能对 IEnumerable 进行多次枚举
17 浏览
Resharper: 可能对 IEnumerable 进行多次枚举
我正在使用新的Resharper版本6。在我的代码中的几个地方,它划线并警告我可能会有IEnumerable的多重枚举。
我理解这是什么意思,并在适当的情况下采取了建议,但在某些情况下,我不确定这是否真的是一个大问题。
就像下面的代码:
var properties = Context.ObjectStateManager.GetObjectStateEntry(this).GetModifiedProperties(); if (properties.Contains("Property1") || properties.Contains("Property2") || properties.Contains("Property3")) { ... }
它在第二行划线了每个properties
的提及,并警告我多次枚举了这个IEnumerable。
如果我在第一行的末尾添加.ToList()
(将properties
从IEnumerable
转换为List
),警告就会消失。
但是,如果我将其转换为List,那么它将首先枚举整个IEnumerable来构建List,然后根据需要枚举List来查找属性(即1次完整枚举和3次部分枚举)。而在我的原始代码中,它只进行了3次部分枚举。
我错了吗?这里最好的方法是什么?