Come verificare se uno Stack<T> è vuoto

Come verificare se uno Stack<T> è vuoto

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


Ci sono tre approcci comuni e quello che usi di solito sarà una questione di gusti.

if(!stack.Any()) ...
if(stack.Count() == 0) ...
if(stack.Count == 0) ...

Il profilo dei diversi approcci si presenta così:

.Any() e .Count() impiega 10-20 volte in più di .Count ... e può ancora essere eseguito decine di migliaia di volte al millisecondo . Quindi .Count > 0 è "molto più veloce", ma gli altri sono comunque abbastanza veloci da non doversi preoccupare nella maggior parte delle circostanze. Personalmente rimarrei con Any() dal momento che sento che si legge meglio, ma non darei critiche a nessuno per aver scelto Count .


Puoi anche creare il tuo metodo di estensione

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