假設我想訪問Collection中的對象,並且我想確保 它不會遍歷整個Collection來確定大小。確定是否調用ICollection Count會導致迭代
如何確定並控制對'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集合添加一百萬個文檔,並計算它以查看調用Count的速度。我問了這個問題,因爲我可能選擇使用IEnumerable而不是Collection,因爲我的Collections的數量和數據量都很大,以至於一次返回所有這些將會是一個問題。不過,我想知道IEnumarable的缺點,Joshua在另一個問題中指出,鎖定它不是一個好主意。
我已經檢查了衆所周知的列表類作爲一個經常使用的實現。 Count方法的文檔是:獲取列表中實際包含的元素的數量。仍然不知道它是否在這裏迭代或不... ...(我可以猜到Allthough) –
HCP
2011-05-03 13:30:45