причина всего этого довольно проста.Когда вы пишете SPList.Items.Count, чтобы получить общее количество элементов, SPList.Items возвращает коллекцию всех элементов в списке.Вы не хотите все предметы, это может быть дорогостоящим действием.Написав SPList.ItemCount, вы убедитесь, что вы читаете только число из базы данных, а не все элементы.
По сути, это верно для всех элементов в списке - как правило, следует избегать использования всех объектов Collection(т.е. SPList.Items или SPFolder.Files), когда вы можете.Точно так же, если вы используете их более одного раза, вы должны кэшировать их, используя локальную переменную.
Вот пример использования индексаторов.Предположим, у меня есть Guid, и я хочу получить элемент.
SPListItem item = list.Items [guid];
Выглядит достаточно невинно, но на самом деле это то же самое, что и:
SPListItemCollection items = list.Items;SPListItem item = items [guid];
Дело в том, что SharePoint (и C #, действительно) не знает, что вы собираетесь делать дальше или как вы собираетесь использовать коллекцию.В тот момент, когда вы написали. Детали вы уже сделали медленную операцию.