Есть ли встроенный способ ограничения глубины System.Collection.Generics.Stack? Так что, если у вас максимальная емкость, нажатие нового элемента приведет к удалению дна стека?
Я знаю, что могу сделать это путем преобразования в массив и перестройки стека, но я подумал, что, возможно, уже есть метод для него.
РЕДАКТИРОВАТЬ: я написал метод расширения:
public static void Trim<T> (this Stack<T> stack, int trimCount)
{
if (stack.Count <= trimCount)
return;
stack = new
Stack<T>
(
stack
.ToArray()
.Take(trimCount)
);
}
Итак, он возвращает новый стек после обрезки, но не является неизменным функциональным способом =)
Причина этого в том, что я храню шаги отмены для приложения в стеке и хочу хранить только конечное количество шагов.