Ответ 1
Список уже сохраняет свой Count
внутри. Сравнение, которое вы делаете, связано с стилем кода, а не с производительностью. Поскольку компилятор оптимизирует поиск "Count"
Интересно, имеет ли это значение:
for (int i = 0; i < values.Count; i++)
{
//
}
против
int num = values.Count;
for(int=0; i<num; i++)
{
}
Я думаю, что второй подход лучше, потому что вам не нужно считать все элементы на каждой итерации. Но я могу ошибаться. Может ли кто-нибудь осветить меня?
Список уже сохраняет свой Count
внутри. Сравнение, которое вы делаете, связано с стилем кода, а не с производительностью. Поскольку компилятор оптимизирует поиск "Count"
Хорошо, вы можете посмотреть исходный код .NET здесь http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs#aa7e01fcb80a917e
public int Count {
get {
Contract.Ensures(Contract.Result<int>() >= 0);
return _size;
}
}
Казалось бы, свойство .Count в списке выполняет быструю внутреннюю проверку, а затем возвращает _size. Таким образом, это должно быть очень близко к производительности, которую вы сами сохраняете.
Это полностью зависит от того, что values
. Count
может быть реализовано совершенно по-разному, в зависимости от типа этого объекта.
Если вы говорите об общем List<T>
- то граф реализуется как внутреннее свойство, которое не переоценивается - и, следовательно, лучший выбор.