一方、Stackではインデクサがサポートされないのでfor文による列挙はできません。 for文でインデックスを用いた列挙を行うためには、Stackを配列に変換してから列挙するか、LINQの拡張メソッドSelectを使って次のようにします。
LINQのSelect拡張メソッドを使ってStackに対してインデックス付きの列挙を行う
Option Infer On
Imports System
Imports System.Collections.Generic
Imports System.Linq
Class Sample
Shared Sub Main()
Dim s As New Stack(Of String)()
s.Push("Alice")
s.Push("Bob")
s.Push("Charlie")
' Selectメソッドを使ってStackの要素をインデックス付きで列挙する
For Each pair In s.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 => Eve 1 => Dave 2 => Charlie