gpt4 book ai didi

vb.net - 使用 "For Each"语句从列表中的最后一个元素到第一个元素

转载 作者:行者123 更新时间:2023-12-04 21:58:07 24 4
gpt4 key购买 nike

当我想从列表中的最后一个元素迭代到第一个元素时,我通常这样做:

For i=list.Count-1 to 0 Step -1
'do something
Next

我想知道是否有一种方法可以使用 For Each 语句以这种方式遍历列表。

谢谢!

最佳答案

这可以通过 Enumerable.Reverse 来完成.如果 list键入为 IEnumerable ,你可以这样称呼它:

For Each item in list.Reverse()
Next

但是,如果是 ArrayListList(Of T) ,这将调用 Reverse修改列表的方法(并且不返回任何内容)。在这种情况下,您可以调用 Enumerable直接或使用 AsEnumerable :
For Each item in Enumerable.Reverse(list)
Next

For Each item in list.AsEnumerable().Reverse()
Next

需要注意的是,此方法会将列表复制到数组中。如果需要节省内存,最好使用 For...To方法。你可以把它包装成你自己的 iterator功能 extension method尽管:
<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

关于vb.net - 使用 "For Each"语句从列表中的最后一个元素到第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19027688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com