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