一方、Queueではインデクサがサポートされないのでfor文による列挙はできません。 for文でインデックスを用いた列挙を行うためには、Queueを配列に変換してから列挙するか、LINQの拡張メソッドSelectを使って次のようにします。
LINQのSelect拡張メソッドを使ってQueueに対してインデックス付きの列挙を行う
Imports System
Imports System.Collections.Generic
Imports System.Linq
Class Sample
Shared Sub Main()
Dim q As New Queue(Of String)()
q.Enqueue("Alice")
q.Enqueue("Bob")
q.Enqueue("Charlie")
' Selectメソッドを使ってQueueの要素をインデックス付きで列挙する
For Each pair In q.Select(Function(e, i)
Return New With {.Element = e, .Index = i}
End Function)
Console.WriteLine($"{pair.Index} => {pair.Element}")
Next
End Sub
End Class
実行結果
0 => Alice 1 => Bob 2 => Charlie