ari*_*iel 18 vb.net collections
在VB.net的某个时候我有类似的东西:
For Each El in Collection
Write(El)
Next
Run Code Online (Sandbox Code Playgroud)
但如果我需要索引号,我必须将其更改为
For I = 0 To Collection.Count() - 1
Write(I & " = " & Collection(I))
Next
Run Code Online (Sandbox Code Playgroud)
甚至(更糟)
I = 0
For Each El In Collection
Write(I & " = " & El)
I += 1
Next
Run Code Online (Sandbox Code Playgroud)
有另一种获取索引的方法吗?
Jim*_*nts 24
如果您使用的是通用集合(Collection(of T)),那么您可以使用IndexOf方法.
For Each El in Collection
Write(Collection.IndexOf(El) & " = " & El)
Next
Run Code Online (Sandbox Code Playgroud)
我相信你用计数器变量做这个原始方法是最有效的方法.使用Linq或IndexOf会破坏性能.
Dim i as Integer = 0
For Each obj In myList
'Do stuff
i+=1
Next
Run Code Online (Sandbox Code Playgroud)
如果您需要索引,那么 for 循环是最直接的选择,并且具有出色的性能。除了您提到的替代方案之外,您还可以使用重载Select方法来跟踪索引并继续使用 foreach 循环。
Dim list = Enumerable.Range(1, 10).Reverse() ''# sample list
Dim query = list.Select(Function(item, index) _
New With { .Index = index, .Item = item })
For Each obj In query
Console.WriteLine("Index: {0} -- Item: {1}", obj.Index, obj.Item)
Next
Run Code Online (Sandbox Code Playgroud)
但是,如果唯一的原因是迭代它并知道索引,我会坚持使用 for 循环。上面并没有说明为什么你选择跳过 for 循环。
| 归档时间: |
|
| 查看次数: |
46175 次 |
| 最近记录: |