Tag: 永恒

Resharper:可能的IEnumerable的多个枚举

我正在使用新的Resharper版本6.在我的代码中的几个地方,它已经强调了一些文本,并警告我可能会有一个可能的IEnumerable多个枚举 。 我理解这意味着什么,并在适当的时候采纳了build议,但在某些情况下,我不确定这实际上是一个大问题。 像下面的代码一样: 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来首先构buildList,然后根据需要枚举List以查找属性(即1个完全枚举和3个部分枚举)。 而在我原来的代码中,只做了3个部分枚举。 我错了吗? 这里最好的方法是什么?