foreach循環裏面一個foreach:哪個循環更高效/最好 - 的foreach或while循環
var list1 = new List<int>() {0,1,2,3,4,5,6,7,8,9};
var list2 = new List<int>() {9,8,7,6,5,4,3,2,1,0};
foreach (var list1Value in list1)
{
foreach (var list2Value in list2)
{
if (list1Value == list2Value)
// do something
}
}
或IEnumerable的foreach循環內
var list1 = new List<int>() {0,1,2,3,4,5,6,7,8,9};
var list2 = new List<int>() {9,8,7,6,5,4,3,2,1,0}
var enumerator = (System.Collections.IEnumerator)list2.GetEnumerator();
foreach (var list1Value in list1)
{
enumerator.Reset();
while (enumerator.MoveNext())
{
if (list1Value == (int)enumerator.Current)
// Do something
}
}
我更喜歡第一的可讀性,但認爲第二個更有效率。請注意,代碼只是一個示例,並不代表我實際運行的代碼。
這是個人偏好,因此我懷疑這會關閉。我個人發現第一個更具可讀性。無需過分複雜的解決方案。 – Arran
你打算爲「做些什麼」做什麼? – shahkalpesh
foreach在foreach中,編譯器是否在第一個foreach循環的每次迭代中爲第二個foreach創建一個新的枚舉器? –