首页 > 解决方案 > 在这个例子中继承是如何工作的?

问题描述

以下代码的作用是尝试将添加到基础堆栈的最小值存储在另一个堆栈中,在我的示例中调用该堆栈s2(当弹出该最小值时,它也会从 中弹出Stack s2),什么我不明白base.Push(value);push方法和方法base.Pop();中是如何pop工作的?

我的超类是Stack<int>这意味着我可以使用它的方法,包括pushandpop但在我的示例中,如果我在 an 上使用我的push方法Integer,它将调用base.Pushon that Integer,但是该base.Push方法在哪里添加,Integer因为我创建和初始化的唯一堆栈是Stack s2

class StackWithMin2 : Stack<int> {

    Stack<int> s2;

    public StackWithMin2() {
        s2 = new Stack<int>();
    }

    public void push(int value) {
        if (value<=min()) {
            s2.Push(value);
        }

        base.Push(value);
    }

    public int pop() {
        int value = base.Pop();
        if (value==min() {
            s2.Pop();
        }
        return value;
    }

    public int min() {
        if (s2.Count == 0)
        {
            return int.MaxValue;
        }
        else {
            return s2.Peek();
        }

    }
}

标签: c#inheritance

解决方案


推荐阅读