假设我想从 a 访问一个对象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
over Collection
,因为我的集合的数量和每个项目的数据都非常大,一次返回所有这些将是一个问题。
但是,我也想知道它的缺点IEnumarable
,Joshua 在另一个问题中指出锁定它不是一个好主意。