在 C# foreach
循環中檢索迭代索引
C# 的 foreach
迴圈本身並沒有提供對迭代索引的存取。 不過,我們可以巧妙地使用 LINQ 的 Select
方法來實現這一點。
Ian Mercer 的方法使用 Select
的重載來接受帶有值和索引參數的 lambda 表達式,非常有效:
<code class="language-csharp">foreach (var item in Model.Select((value, i) => new { i, value })) { var value = item.value; var index = item.i; }</code>
lambda 表達式 (value, i) => new { i, value }
建立一個匿名對象,其中包含項目 (value
) 及其索引 (i
)。
為了獲得更好的性能並避免不必要的堆分配(對於大型集合尤其有利),請考慮使用 ValueTuple
(從 C# 7.0 開始提供):
<code class="language-csharp">foreach (var item in Model.Select((value, i) => (value, i))) { var value = item.value; var index = item.i; }</code>
更簡潔的是,利用 C# 的解構功能,我們可以直接存取值和索引:
<code class="language-csharp">foreach (var (value, i) in Model.Select((value, i) => (value, i))) { // Access `value` and `i` directly here. }</code>
這些方法有效地允許您在使用 foreach
循環時取得當前迭代索引,從而在程式碼中提供更好的控制和靈活性。
以上是如何訪問C#foreach循環中的當前迭代索引?的詳細內容。更多資訊請關注PHP中文網其他相關文章!