2014-09-09 9 views
12

Czy jest jakiś inny sposób, z wyjątkiem Stack<T>.Count() == 0, aby sprawdzić, czy Stack<T> jest pusty?Jak sprawdzić, czy stos <T> jest pusty

Pochodząca z tła C++/Java, gdzie klasy "stosu" zazwyczaj mają jakąś dedykowaną "pustą" metodę, taką jak Java - Stack.empty.

+1

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

+0

IMHO, który jest bardzo czytelny i efektywny sposób. Więc nie, nie znam lepszego sposobu, ponieważ ['Peek'] (http://msdn.microsoft.com/en-us/library/1w32446f (v = vs.110) .aspx) nie jest opcją. –

+2

Możesz użyć "Any", jak sądzę. 'var notEmpty = stack.Any()'. Żeby było jasne, jak mówi poniżej @TimSchmelter, nie jest to tak skuteczne, jak użycie właściwości 'Count'. –

Odpowiedz

23

Zamiast używać .Count() == 0, po prostu użyj .Count == 0. Wykorzystuje to właściwość stosu zamiast metody rozszerzenia linq.

+6

Dla informacji: w praktyce nie ma to większego znaczenia, ponieważ 'Stack ' implementuje 'ICollection' iw takim przypadku' Enumerable.Count' po prostu używa właściwości 'Count'. – Dirk

2

Można utworzyć własną metodę rozszerzenia zbyt

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

Niektóre rozszerzenia są po prostu zbędne. To jedna z nich. Po prostu ukrywa implementację, która nie jest skomplikowana. Dlatego zawsze musimy sprawdzić, dlaczego metoda istnieje, być może istnieje ważny szczegół. –

+0

Zgadzam się z tobą, ale nie rozmawiamy o tym, czy jest to wygodne, czy nie, tylko jeśli można to zrobić w inny sposób. ;) – Blau

Powiązane problemy