LINQのSelect拡張メソッドを使ってStackに対してインデックス付きの列挙を行う 言語: C# VB 一方、Stackではインデクサがサポートされないのでfor文による列挙はできません。 for文でインデックスを用いた列挙を行うためには、Stackを配列に変換してから列挙するか、LINQの拡張メソッドSelectを使って次のようにします。 LINQのSelect拡張メソッドを使ってStackに対してインデックス付きの列挙を行う すべて選択してコピー ダウンロード 行番号を表示する using System; using System.Collections.Generic; using System.Linq; class Sample { static void Main() { var s = new Stack<string>(); s.Push("Alice"); s.Push("Bob"); s.Push("Charlie"); // Selectメソッドを使ってStackの要素をインデックス付きで列挙する foreach (var pair in s.Select((e, i) => new {Element = e, Index = i})) { Console.WriteLine($"{pair.Index} => {pair.Element}"); } } } 実行結果 0 => Eve 1 => Dave 2 => Charlie 関連するページ Stackにnullを格納する(値型の場合) Clearメソッドを使ってStackの内容を空にする foreach文でStackの内容を列挙する 配列の内容をStackの初期内容としてインスタンスを作成する ToArrayメソッドでStackを配列に変換する・CopyToメソッドでStackの内容を配列にコピーする LINQの拡張メソッドSkip・Takeを使ってStackの一部分を配列に変換する