一位同事使用for循環來迭代他編寫的一些C#代碼中的List,並且留下了評論,「沒有使用For Each,因爲我不確定它是否按順序迭代,誰知道微軟會做什麼。」例如,假設我們已經建立了這樣的名單:.NET foreach語句是否保證以與構建集合相同的順序迭代集合?
var someList = new List<string>();
someList.Add("one");
someList.Add("two");
someList.Add("three");
我的同事使用的是這樣的:
for (int i = 0; i < someList.Count; i++)
{
System.Diagnostics.Debug.WriteLine(someList[i]);
}
,而不是這樣的:
foreach (var item in someList)
{
System.Diagnostics.Debug.WriteLine(item);
}
我猜他是害怕項目可能會以與添加到集合中不同的順序出現。我認爲他有點偏執,但從技術上講,文檔並沒有說明集合迭代的順序。 foreach語句是否有可能以任何順序遍歷數組或集合對象,而不是從最低邊界到最高邊界?
+1哦,不,Skeet效應讓你的選票減少。 – 2009-03-04 21:27:10
測試以查看我是否可以克服Skeet效應。手指交叉。 – 2009-03-04 21:27:49