Tao*_*Gil 4 vb.net foreach for-loop
当我想从列表中的最后一个元素迭代到第一个元素时,我通常会这样做:
For i=list.Count-1 to 0 Step -1
    'do something
Next
我想知道是否有办法使用For Each语句以这种方式迭代列表.
谢谢!
nmc*_*ean 11
这可以使用Enumerable.Reverse完成.如果list输入为IEnumerable,您可以这样调用它:
For Each item in list.Reverse()
Next
但是,如果是ArrayList或List(Of T),这将调用修改列表的Reverse方法(并且不返回任何内容).在这种情况下,您可以Enumerable直接调用或使用AsEnumerable:
For Each item in Enumerable.Reverse(list)
Next
For Each item in list.AsEnumerable().Reverse()
Next
需要注意的是,此方法会将列表复制到数组中.如果需要节省内存,最好使用该For...To方法.您可以将它包装到您自己的迭代器函数扩展方法中:
<Extension()>
Public Iterator Function LazyReverse(Of T)(source As IList(Of T)) As IEnumerable(Of T)
    For i = source.Count - 1 To 0 Step -1
        Yield source.Item(i)
    Next
End Function
然后随时打电话给:
For Each item in list.LazyReverse()
Next
| 归档时间: | 
 | 
| 查看次数: | 1422 次 | 
| 最近记录: |