Под удалением элементов подразумевается удаление элементов, которые не находятся на вершине стека?
Один из способов сделать это - использовать List, а затем использовать методы расширения для реализации поведения, подобного стеку (закодировано в блокноте, приносим извинения за любые незначительные ошибки). Затем вы можете также выполнить специальную обработку (возможно, вы хотите вернуть ноль или выдать исключение, если список пуст, возможно, вы хотите убедиться, что элемент еще не находится в списке и т. Д.
public static void Push<T>(this IList<T> list, T item)
{
list.InsertAt(0, item);
}
public static T Pop<T>(this IList<T> list)
{
if(list.Count > 0)
{
T value = list[0];
list.RemoveAt(0);
return value;
}
// handle error
}