Stackから配列へ変換する場合にはToArrayメソッドやCopyToメソッドが使えます。 ToArrayメソッドではStackの内容を配列に変換したものが得られ、CopyToメソッドではStackの内容を既存の配列にコピーします。 変換・コピーした後の配列の内容は、列挙操作を行った場合と同様にStackの内容を一つずつPopした場合と同じ順序になります。 当然、変換・コピーの前後でStackの内容は変化しません。
ToArrayメソッドでStackを配列に変換する・CopyToメソッドで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");
// 配列に変換
Console.WriteLine("[ToArray]");
var arr1 = s.ToArray();
for (var i = 0; i < arr1.Length; i++) {
Console.WriteLine("arr1[{0}] => {1}", i, arr1[i]);
}
// 配列にコピー
Console.WriteLine("[CopyTo]");
var arr2 = new string[s.Count];
s.CopyTo(arr2, 0);
for (var i = 0; i < arr2.Length; i++) {
Console.WriteLine("arr2[{0}] => {1}", i, arr2[i]);
}
}
}
実行結果
[ToArray] arr1(0) => Charlie arr1(1) => Bob arr1(2) => Alice [CopyTo] arr2(0) => Charlie arr2(1) => Bob arr2(2) => Alice