【发布时间】:2011-09-29 10:41:55
【问题描述】:
我正在使用新的 Resharper 6
我明白这意味着什么,并在适当的时候听取了建议,但在某些情况下,我不确定这是否真的很重要。
如下代码:
var properties = Context.ObjectStateManager.GetObjectStateEntry(this).GetModifiedProperties();
if (properties.Contains("Property1") || properties.Contains("Property2") || properties.Contains("Property3")) {
...
}
它在第二行每一次提到properties 都加了下划线,警告我正在多次枚举这个 IEnumerable。
如果我将 .ToList() 添加到第 1 行的末尾(将 properties 从 IEnumerable<string> 转换为 List<string>),警告就会消失。
但是可以肯定的是,如果我将其转换为 List,那么它将首先枚举整个 IEnumerable 以构建 List,然后根据需要枚举 List 以查找属性(即 1 个完整枚举,以及3个部分枚举)。而在我的原始代码中,它只进行了 3 个部分枚举。
我错了吗?这里最好的方法是什么?
【问题讨论】:
标签: c# linq resharper ienumerable optimization