VB:通过列表向后循环

时间:2016-02-29 17:57:08

标签: arrays vb.net list loops foreach

我已经设置了一个遍历列表的For Each语句。该列表由“像素”组成,这是一个自定义的图片框类。我需要设置一个循环,以相反的顺序遍历列表。这就是我的正常循环:

        For Each Tile As Pixel In PixelList
            If Tile.PixelNumber = 1 Then
                Tile.NewColour()
            End If
        Next

PixelNumber只是一个整数变量,可以计算哪个像素是哪个。

Pixel是自定义Picturebox类

PixelList是列表的名称

我需要能够设置一个类似的循环,但是在添加I Tile时以相反的顺序遍历列表。所以先进先出。

2 个答案:

答案 0 :(得分:2)

ʀᴎᴅᴏƞᴎᴅᴏƞway way的方式是最有效的,但一个简单的替代方法是使用List(Of T).Reverse() function,但这会改变列表本身的顺序。

    PixelList.Reverse()
    For Each Tile As Pixel In PixelList
        If Tile.PixelNumber = 1 Then
            Tile.NewColour()
        End If
    Next

答案 1 :(得分:1)

通过索引访问列表,该索引从集合中的元素计数开始并递减1。

For i as Integer = PixelList.Count - 1 To 0 Step -1
    If DirectCast(PixelList(i), Pixel).PixelNumber = 1 then DirectCast(PixelList(i), Pixel).NewColour()
Next