Я использую новую версию Resharper 6. В некоторых местах моего кода он выделил некоторый текст и предупредил меня о возможном множественном перечислении IEnumerable .
.
Я понимаю, что это значит, и при необходимости воспользовался советом, но в некоторых случаях я не уверен, что это действительно большое дело.
Как в следующем коде:
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>
), предупреждения исчезнут.
Но, конечно, если я преобразую его в список, то он будет перечислять весь IEnumerable для создания списка в первую очередь, а затем перечислять список по мере необходимости, чтобы найти свойства (т.е. 1 полное перечисление и 3 частичных перечисления). Принимая во внимание, что в моем исходном коде это только 3 частичных перечисления.
Я не прав? Какой лучший метод здесь?