我想反转堆栈,因此顶部的元素应该为零,反之亦然。我知道这样做可能不是正确的操作,但我想这样做。如果没有,我想知道为什么这不起作用
当我做
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)
有什么想法/解决方案吗?
感谢和问候,
加内什
假设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)