一方、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