使用 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中文网其他相关文章!