Что делает следующий код, чтобы попытаться сохранить минимальное значение, которое будет добавлено к базовому стеку внутри другого стека, который в моем примере называется s2
(и когда это минимальное значение будет вытолкнуто, оно также будетвыскочил из Stack s2
), я не понимаю, как работает base.Push(value);
в методе push
и base.Pop();
в методе pop
?
Мой суперкласс Stack<int>
это означает, что я могу использовать его методы, включая push
и pop
, но в моем примере, если я использую свой push
метод для Integer
, который вызовет base.Push
для этого 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();
}
}
}