使用C# 的ForEach 同時迭代兩個列表或數組
在C# 中,可以使用相同的方法同時迭代多個列表或數組foreach 語句。這消除了對多種迭代方法的需求並簡化了流程。
使用 Zip 方法
如果您使用的是 .NET Framework 4.0 或更高版本,您可以利用內建的 Zip 方法。此方法對來自兩個指定序列的元素進行配對,從而產生配對序列。
例如,如果您有兩個列表,listA 和listB,則可以使用Zip 方法,如下所示:
var numbers = new [] { 1, 2, 3, 4 }; var words = new [] { "one", "two", "three", "four" }; var numbersAndWords = numbers.Zip(words, (n, w) => new { Number = n, Word = w });
此程式碼建立一系列匿名對象,其中每個對象都包含一個Number 屬性和一個Word 屬性。然後,您可以使用foreach 語句迭代此序列:
foreach(var nw in numbersAndWords) { Console.WriteLine(nw.Number + nw.Word); }
使用元組的替代方法
或者,您可以使用元組而不是建立匿名對象和Tuple.Create幫助器以保存大括號:
foreach (var nw in numbers.Zip(words, Tuple.Create)) { Console.WriteLine(nw.Item1 + nw.Item2); }
其他迭代選項
雖然Zip 方法提供了一種同時迭代兩個序列的簡潔方法,但還有其他選項。一種方法是使用雙for 循環:
for(int i = 0; i < listA.Count; i++) listB[i] = listA[i];
另一種方法是使用Parallel.ForEach:
Parallel.ForEach(numbers, number => { int index = Array.IndexOf(numbers, number); listB[index] = words[index]; });
選擇最佳迭代方法
最佳迭代方法將取決於您的特定要求和您所使用的.NET 版本使用。 Zip 方法高效且通用,而其他方法可能更適合遺留場景或基於索引分配值時。
以上是如何在 C# 中同時迭代兩個列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!