You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET遍历列表/数组时无需显式计数器获取索引

在VB.NET中遍历集合时获取元素索引(无需单独计数器)

嘿,这个问题我太懂了!你不想手动维护那个烦人的计数器变量i对吧?在VB.NET里确实有几种优雅的方式,能同时拿到元素和它的索引,完美替代你写的那种写法,下面给你逐个说明:

方法1:用LINQ的Select投影索引与元素

这是通用性最强的方法,不管是数组还是List(Of T)都能用。利用Enumerable.Select的重载版本,它能同时接收元素和对应的索引,我们用匿名类型把这俩包起来,遍历的时候直接取用就行:

Dim arr() As String = {"a", "b", "c", "d", "e"}
For Each item In arr.Select(Function(x, idx) New With {.Value = x, .Index = idx})
    Console.WriteLine($"Item ""{item.Value}"" is index {item.Index}")
Next

这里的匿名类型可以自定义属性名,比如改成.Item和.Idx都没问题,完全看你习惯。

方法2:用List(Of T).ForEach的索引重载

如果你操作的是List(Of T)而不是数组,那List自带的ForEach方法有个带索引的重载,写法更紧凑:

Dim myList As New List(Of String) From {"a", "b", "c", "d", "e"}
myList.ForEach(Sub(item, idx)
                   Console.WriteLine($"Item ""{item}"" is index {idx}")
               End Sub)

直接把处理逻辑写在委托里,索引会自动传递进来,连For Each的外层循环都省了。

方法3:用Enumerable.Range遍历索引再取元素

这个思路是反过来的:先生成从0到集合长度的索引序列,再通过索引器获取对应元素,同样不用手动维护计数器:

Dim arr() As String = {"a", "b", "c", "d", "e"}
For Each idx In Enumerable.Range(0, arr.Length)
    Dim item = arr(idx)
    Console.WriteLine($"Item ""{item}"" is index {idx}")
Next

这种方式适合你更关注索引,需要先拿到索引再处理元素的场景。


内容的提问来源于stack exchange,提问作者Bigbob556677

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:44:05