在C#中遍歷集合/ IEnumeration的最有效方法是什麼?我有一個包含近1100個對象的列表。這些對象中的近10個,包含1000個子對象(相同類型)。遍歷此列表需要將近5-6秒。這裏是我的代碼:使用IEnumerable的最高效方式
foreach (Parameter par in this.AllParameters) //this.AllParameters is Generic.List type
{
foreach (Parameter subPar in par.WrappedSubParameters)
{
subPar.IsSelected = false;
}
par.IsSelected = false;
}
有沒有一種方法來優化此代碼,以便它足夠快,不需要5-6秒?
我建議你先在代碼上運行[profiler](http://stackoverflow.com/q/3927/87698)。在'AllParameters'屬性,'WrappedSubParameters'屬性,'IsSelected'設置器,其中一個枚舉器等中,時間可能會丟失。(哦,如果有時間的話,Eric Lippert的[關於公共基準測試的系列錯誤](http://tech.pro/blog/1293/c-performance-benchmark-mistakes-part-one)值得一讀。) – Heinzi
我不會指望大約一百萬寫這樣的,採取5 -6秒。你在調試版本中計時嗎?在VS之外的發行版本中,我認爲這比大多數系統快一點,除非發生其他事情,例如IsSelected數據綁定等。 –
是@ReedCopsey,IsSelected已綁定DataGrid的選擇屬性。這可能是時間循環的原因嗎? – Irfan