Y a-t-il un moyen intégré pour limiter la profondeur d'un System.Collection.Generics.Stack? Donc, si vous êtes à la capacité maximale, pousser un nouvel élément enlèverait le bas de la pile?Puis-je limiter la profondeur d'une pile générique?
Je sais que je peux le faire en se convertissant à un tableau et la reconstruction de la pile, mais j'ai pensé il y a probablement une méthode sur déjà.
EDIT: J'ai écrit une méthode d'extension:
public static void Trim<T> (this Stack<T> stack, int trimCount)
{
if (stack.Count <= trimCount)
return;
stack = new
Stack<T>
(
stack
.ToArray()
.Take(trimCount)
);
}
Ainsi, il retourne une nouvelle pile sur la coupe, mais n'immuabilité la voie fonctionnelle =)
La raison est que je stocke des étapes d'annulation pour une application dans une pile, et je veux seulement stocker un nombre fini d'étapes.
Ce n'est pas une vraie pile si vous implémentez votre comportement. Le comportement le plus correct est probablement de lancer une exception ou (dans les systèmes concurrents) bloquer jusqu'à ce que l'espace soit disponible (en supposant que le thread actuel n'est pas le seul thread à pousser sur la pile). – cletus
Ma première pensée est que vous ne faites pas une faveur à vos utilisateurs de cette façon. –
Jay, Élaborer? Comment stockez-vous les informations d'annulation de profondeur limitée? – FlySwat