Stackの一部分のみを配列として取得するメソッドは用意されていません。 そのため、全部を配列に変換した後必要な部分だけを抜き出して使うか、次のようにLINQの拡張メソッドSkipおよびTakeを組み合わせて一部分のみを取得します。
LINQの拡張メソッドSkip・Takeを使ってStackの一部分を配列に変換する
Imports System
Imports System.Collections.Generic
Imports System.Linq
Class Sample
Shared Sub Main()
Dim s As New Stack(Of 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)
Dim arr() As String = s.Skip(1).Take(3).ToArray()
For i As Integer = 0 To arr.Length - 1
Console.WriteLine("arr({0}) => {1}", i, arr(i))
Next
End Sub
End Class
実行結果
arr[0] => Dave arr[1] => Charlie arr[2] => Bob