LINQの拡張メソッドSkip・Takeを使ってStackの一部分を配列に変換する 言語: C# VB Stackの一部分のみを配列として取得するメソッドは用意されていません。 そのため、全部を配列に変換した後必要な部分だけを抜き出して使うか、次のようにLINQの拡張メソッドSkipおよびTakeを組み合わせて一部分のみを取得します。 LINQの拡張メソッドSkip・Takeを使って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"); s.Push("Dave"); s.Push("Eve"); // Stackの1番目から3つ分を配列に変換 // (Stackから要素1つ分をSkip、そこから要素3つをTake、その結果をToArray) var arr = s.Skip(1).Take(3).ToArray(); for (var i = 0; i < arr.Length; i++) { Console.WriteLine("arr[{0}] => {1}", i, arr[i]); } } } 実行結果 arr[0] => Dave arr[1] => Charlie arr[2] => Bob 関連するページ LINQのSelect拡張メソッドを使ってStackに対してインデックス付きの列挙を行う 配列の内容をStackの初期内容としてインスタンスを作成する ToArrayメソッドでStackを配列に変換する・CopyToメソッドでStackの内容を配列にコピーする