Предположим, я хочу получить доступ к объекту из Collection
, и я хочу быть уверен
он не перебирает все Collection
только для определения размера.
Как я могу определить и проконтролировать, приведет ли вызов к Count
к действительной итерации по коллекции?
(кроме использования моей собственной реализации ICollection
), другими словами, есть ли реализации, которые предлагают это?
public void PrintThreeNames(ICollection<string> names)
{
//first I want to know if the collection has at least three elements.
if (names != null && names.Count >= 3)
{
IEnumerator<string> enumerator = names.GetEnumerator();
string value0 = enumerator.Current;
enumerator.MoveNext();
string value1 = enumerator.Current;
enumerator.MoveNext();
string value2 = enumerator.Current;
//print values.
Console.Writeline(value0 + value1 + value2);
}
}
В ответ на вопрос героя программистов. Я полагаю, что я могу сделать коллекцию IEnumerable<T>
, добавить к ней миллион документов и посчитать ее, чтобы увидеть, насколько быстрым является и вызов Count
.
Я задал этот вопрос, поскольку я могу выбрать использование IEnumerable
вместо Collection
, поскольку мои коллекции так же велики по количеству и данным на элемент, что будет проблемой вернуть их все сразу.
Однако я хотел бы знать и недостатки IEnumarable
, Джошуа указал на блокировку, что это не очень хорошая идея, в другом вопросе.