Mat*_*nen 15
Stack本身没有ToList方法,它是类中的扩展方法Enumerable.由于这些扩展方法只处理IEnumerable<T>,因此可以安全地假设ToList迭代堆栈的项目以创建新列表.
更新:我用Reflector检查过; Enumerable将其项目存储在数组中,最下面的元素位于索引0处,但它以相反的顺序Stack<T>迭代数组.因此,从迭代器出来的第一个元素是堆栈的顶部.
ToList 将按照与执行此操作相同的顺序迭代:
foreach (T item in stack)
Run Code Online (Sandbox Code Playgroud)
在对文档GetEnumerator()不明确说明的顺序,据我所知道的,但例子表明,它会遍历就好像雨后春笋般冒出.因此,如果您按1,2,3,4,5,那么ToList将给你5,4,3,2,1.