C# MyStack.Reverse()不工作

C# MyStack.Reverse()不工作,c#,stack,reverse,C#,Stack,Reverse,我想反转堆栈,这样顶部的元素应该为零,反之亦然。我知道这可能不是一个正确的操作,但我想这样做。如果不是,我想知道为什么这不起作用 当我这样做的时候 List<string> MyList = new List<string>(); MyList.Reverse() List MyList=new List(); MyList.Reverse() 它起作用了。但不是这个 Stack<string> MyStack = new Stack<string&

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

当我这样做的时候

List<string> MyList = new List<string>();
MyList.Reverse()
List MyList=new List();
MyList.Reverse()
它起作用了。但不是这个

Stack<string> MyStack = new Stack<string>();
MyStack.Reverse()
Stack MyStack=new Stack();
MyStack.Reverse()
有什么想法/解决方案吗

谢谢和问候


甘尼什

可以说,一个堆栈已经处于相反的状态。
如果您有一个包含项目a、B和C的堆栈,其中a位于顶部,则reverse()将为您提供C、B、a,但如果您再次将这些项目添加到堆栈中,a将再次位于顶部。(首先添加C,然后添加B,然后添加A)

假设
MyList
类型为
List
,而
MyStack
类型为
Stack

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

所以你可以试试这个:

MyStack = new Stack ( MyStack.Reverse() );
MSDN:

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

MyStack = new Stack(MyStack);

MyStack属于哪种类型?什么是不起作用的?看,把这个答案和我的结合起来,你就知道了。Reverse()将返回最后一个顶部项目,因此堆栈的顺序将与之前相同。您需要MyStack=newstack(MyStack);不。我想颠倒当前的顺序