我需要使用Reverse
方法來反轉堆棧的順序。如何使用Stack的Reverse方法?
但我已經試過這一點,這是行不通的:
Dim StackObject As New Stack(Of String)
StackObject.Push("S")
StackObject.Push("T")
StackObject.Push("A")
StackObject.Push("C")
StackObject.Push("K")
StackObject = StackObject.Reverse.Cast(Of String)() ' <-- InvalidCastException
For Each str As String In StackObject
MsgBox(str)
Next
我寫了這個通用函數來扭轉堆棧,但我想用Reverse
的方法做它,而不是所有這些unnecesary代碼:
Private Function Reverse_Stack(Of T)(stack As Stack(Of T))
Dim new_stack As New Stack(Of T)
While Not stack.Count = 0
new_stack.Push(stack.Pop)
End While
Return new_stack
End Function
請請不要使用短語「不工作」。我們已經知道這是行不通的,因爲你在這裏張貼。發佈預期行爲和實際行爲。這很簡單。對於像你一樣有業力的人來說,我很驚訝你沒有做正確的事情。 – siride
使用短語「不起作用」,應該處以死刑。 – siride
@siride很顯然,問題出在反向指令'StackObject = StackObject.Reverse.Cast(Of String)()'你只需要讀取我的問題的標題。調試器會拋出一個轉換異常。真的,人們一無所獲。 – ElektroStudios