为什么打印数字从最高到最低?

MrS*_*sco -1 c# stack

我目前正在接受Udemy的C#中级课程,我正在尝试进行其中一项练习.我查看了问答,让学生看到其他人的解决方案,我甚至复制并粘贴了其他人的解决方案,看看他们是否有效,我看不出我和其他人之间有什么区别但是出于某种原因我的代码打印出从最高到最低的数字,如果发生这种情况,代码中没有.练习的想法是创建一个堆栈,我们有3个方法:Push(),Pop()和Clear().push方法将对象添加到ArrayList,pop方法从堆栈顶部删除数字并返回数字.明确的方法是自我解释的.这是我的代码:

Stack Class:
public class Stack {
        private ArrayList _arrayList = new ArrayList();
        public void Push(object obj) {
            if (obj is null) {
                throw new InvalidOperationException();
            }
            else {
                _arrayList.Add(obj);
            }
        }

        public object Pop() {
            if (_arrayList is null) {
                throw new InvalidOperationException();
            }
            else {
                var top = _arrayList.Count;
                _arrayList.Remove(top);

                return top;
            }
        }

        public void Clear() {
            for (int i = 0; i < _arrayList.Count; i++) {
                _arrayList.Remove(i);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

课程类别:

class Program {
        static void Main(string[] args) {
            var stack = new Stack();

            stack.Push(5);
            stack.Push(1);
            stack.Push(2);
            stack.Push(4);
            stack.Push(3);

            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());
            Console.WriteLine(stack.Pop());

        }
    }
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 5

var top = _arrayList.Count;
_arrayList.Remove(top);

return top;
Run Code Online (Sandbox Code Playgroud)

您没有打印值,而是打印存储的元素数量.

尝试将您的值更改为除了前几个正整数之外的其他值,以便更容易地捕获此类错误.

PS:ArrayList十多年没有理由使用了.诸如通用集合类List<int>在各方面都更好 - 更快,更少浪费内存,类型安全.