Existe-t-il un autre moyen, à l'exception de Stack<T>.Count() == 0
, de vérifier si un Stack<T>
est vide?
Venant de l’arrière-plan C++/Java où les classes "stack" ont en général une sorte de méthode "est vide" dédiée, comme Java - Stack.empty .
Au lieu d'utiliser .Count() == 0
, utilisez simplement .Count == 0
. Ceci utilise la propriété de la pile plutôt que la méthode d'extension linq.
Vous pouvez aussi créer votre propre méthode d'extension
namespace System.Collection.Generic {
public static class SystemEx {
public static bool IsEmpty<T>(this Stack<T> stack) {
return (stack.Count==0);
}
}
Vous pouvez utiliser stack.Any()
. Rapide, lisible et standard pour tous les objets IEnumerable<T>
.
Il existe trois approches communes, et celle que vous utilisez sera généralement une question de goût.
if(!stack.Any()) ...
if(stack.Count() == 0) ...
if(stack.Count == 0) ...
Profiler les différentes approches ressemble à ceci :
.Any()
et .Count()
prennent 10x à 20x plus longtemps que .Count
... et peuvent toujours s'exécuter des dizaines de milliers de fois par milliseconde. Donc, .Count > 0
est "beaucoup plus rapide", mais les autres le sont encore assez rapidement pour ne pas avoir à s'inquiéter de la plupart des circonstances. Personnellement, je me contenterais de Any()
puisque j’ai l’impression que cela se lit mieux, mais je ne voudrais pas critiquer quiconque pour choisir Count
.