LINQのSelect拡張メソッドを使ってStackに対してインデックス付きの列挙を行う 言語: VB C# 一方、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 関連するページ Stackにnullを格納する(値型の場合) Clearメソッドを使ってStackの内容を空にする foreach文でStackの内容を列挙する 配列の内容をStackの初期内容としてインスタンスを作成する ToArrayメソッドでStackを配列に変換する・CopyToメソッドでStackの内容を配列にコピーする LINQの拡張メソッドSkip・Takeを使ってStackの一部分を配列に変換する