2014-09-09 15 views
12

C'è un altro modo, ad eccezione di Stack<T>.Count() == 0, per verificare se uno Stack<T> è vuoto?Come verificare se una pila <T> è vuota

Proveniente da sfondo C++/Java dove le classi "stack" in genere hanno una sorta di metodo dedicato "è vuoto" come Java - Stack.empty.

+1

https://answers.yahoo.com/question/index?qid=20120403003525AAWPFlt –

+0

Imho che è un modo molto leggibile ed efficiente. Quindi no, non conosco un modo migliore poiché ['Peek'] (http://msdn.microsoft.com/en-us/library/1w32446f (v = vs.110) .aspx) non è un'opzione. –

+2

Puoi usare 'Any' credo. 'var notEmpty = stack.Any()'. Per essere chiari, come dice @TimSchmelter di seguito, questo non è così efficace come usare la proprietà 'Count'. –

risposta

23

Invece di utilizzare .Count() == 0, utilizzare solo .Count == 0. Questo sta usando la proprietà dello stack piuttosto che il metodo di estensione linq.

+6

Solo per informazione: in pratica ciò non ha importanza perché 'Stack ' implementa 'ICollection' e in questo caso' Enumerable.Count' usa semplicemente anche la proprietà 'Count'. – Dirk

2

È possibile creare il proprio metodo di estensione troppo

namespace System.Collection.Generic { 
    public static class SystemEx { 
     public static bool IsEmpty<T>(this Stack<T> stack) { 
      return (stack.Count==0); 
     }  
    } 
+0

Alcune estensioni sono ridondanti. Questo è uno di loro. Nasconde semplicemente l'implementazione che non è complessa. Quindi dobbiamo sempre cercare perché il metodo esiste del tutto, forse c'è un dettaglio importante. –

+0

Sono d'accordo con te, ma non stiamo discutendo se sia conveniente o meno, solo se può essere fatto in altro modo. ;) – Blau

Problemi correlati