MyStack.Reverse() 不起作用

Gan*_*ute -2 c# stack reverse

我想反转堆栈,因此顶部的元素应该为零,反之亦然。我知道这样做可能不是正确的操作,但我想这样做。如果没有,我想知道为什么这不起作用

当我做

List<string> MyList = new List<string>();
MyList.Reverse()
Run Code Online (Sandbox Code Playgroud)

有用。但不是这个。

Stack<string> MyStack = new Stack<string>();
MyStack.Reverse()
Run Code Online (Sandbox Code Playgroud)

有什么想法/解决方案吗?

感谢和问候,

加内什

Ste*_*uer 5

假设MyList是 类型List<T>并且MyStack是 类型Stack<T>:

List<T>定义了一个名为的方法Reverse,该方法反转列表中元素的顺序 [...] 但Stack<T>没有定义这样的方法。有一个扩展方法 Enumerable.Reverse<T>可以按相反的顺序返回元素。

所以你可以尝试这个:

MyStack = new Stack ( MyStack.Reverse() );
Run Code Online (Sandbox Code Playgroud)

微软软件定义网络:

更新

正如 @Dennis_E 在他的回答和评论中提到的,调用上面的代码行将反转堆栈两次- 意味着 MyStack 将保持不变......所以正确的答案是

MyStack = new Stack(MyStack);
Run Code Online (Sandbox Code Playgroud)