访问 C# Foreach 循环中的迭代索引
C# foreach
循环提供了一种迭代集合的简洁方法。 但是,本质上不支持直接访问迭代索引。 以下是实现此目的的几种方法:
1。手动计数器:
最简单的方法涉及手动递增计数器:
<code class="language-csharp">int index = 0; foreach (var item in myCollection) { // Use 'item' and 'index' index++; }</code>
2。 LINQ 的 Select
与索引:
LINQ 的 Select
方法提供了包含索引的重载:
<code class="language-csharp">foreach (var item in myCollection.Select((value, index) => new { Value = value, Index = index })) { var value = item.Value; var index = item.Index; // Use 'value' and 'index' }</code>
这将创建一个包含值及其索引的匿名类型。
3。 ValueTuple(C# 7.0 及更高版本):
为了提高性能并避免堆分配(特别是对于大型集合),请使用 ValueTuple
:
<code class="language-csharp">foreach (var (value, index) in myCollection.Select((value, index) => (value, index))) { // Access 'value' and 'index' directly }</code>
这利用元组解构来实现更清晰的语法。
4。 For 循环(替代):
对于需要索引访问的情况,标准的 for
循环提供了更直接的解决方案:
<code class="language-csharp">for (int index = 0; index < myCollection.Count; index++) { var item = myCollection[index]; // Use 'item' and 'index' }</code>
当索引对于循环逻辑至关重要时,通常首选此方法。 选择最适合您的编码风格和性能需求的方法。 对于简单的情况,手动计数器就足够了。 对于更大的集合或更复杂的场景,带有 ValueTuple
的 LINQ 提供了可读性和效率的平衡。 当索引操作是循环操作的核心时,for
循环仍然是一个可行的选项。
以上是如何访问c#foreach循环中的迭代索引?的详细内容。更多信息请关注PHP中文网其他相关文章!