首页 > 后端开发 > C++ > 如何在 C# 中同时迭代两个列表?

如何在 C# 中同时迭代两个列表?

Susan Sarandon
发布: 2024-12-31 13:13:17
原创
1000 人浏览过

How Can I Iterate Through Two Lists Simultaneously in C#?

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板