加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 使用列表中最后一个元素的“For Each”语句到第一个元

发布时间:2020-12-17 07:25:58 所属栏目:百科 来源:网络整理
导读:当我想从列表中的最后一个元素迭代到第一个元素时,我通常会这样做: For i=list.Count-1 to 0 Step -1 'do somethingNext 我想知道是否有办法使用For Each语句以这种方式迭代列表. 谢谢! 解决方法 这可以用 Enumerable.Reverse完成.如果列表被输入为IEnumer
当我想从列表中的最后一个元素迭代到第一个元素时,我通常会这样做:

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

我想知道是否有办法使用For Each语句以这种方式迭代列表.

谢谢!

解决方法

这可以用 Enumerable.Reverse完成.如果列表被输入为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方法.您可以将其包装到您自己的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读