StackはIEnumerable<T>を実装しているためforeach文による列挙ができます。 foreach文による列挙では、Pushした順とは逆、つまりPopするときと同じ順で要素が列挙されます。 ポップ操作とは異なり、Stackを列挙するだけでは要素の削除は行われません。

foreach文でStackの内容を列挙する
using System;
using System.Collections.Generic;

class Sample {
  static void Main()
  {
    var s = new Stack<string>();

    s.Push("Alice");
    s.Push("Bob");
    s.Push("Charlie");

    // foreachでStackの内容を列挙
    foreach (var e in s) {
      Console.WriteLine(e);
    }

    // 列挙してもStackから要素は削除されず、内容は変わらない
    Console.WriteLine($"Count = {s.Count}");
  }
}
実行結果
Charlie
Bob
Alice
Count = 3