如何检查Stack <t>是否为空</t>

时间:2014-09-09 15:46:36

标签: c# stack is-empty

除了Stack<T>.Count() == 0之外,是否有其他方法可以检查Stack<T>是否为空?

来自C ++ / Java背景,其中&#34; stack&#34;课程通常有某种专用的#34;是空的&#34;像Java - Stack.empty这样的方法。

4 个答案:

答案 0 :(得分:33)

不要使用.Count() == 0,只需使用.Count == 0即可。这是使用堆栈的属性而不是linq扩展方法。

答案 1 :(得分:4)

您也可以创建自己的扩展方法

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

答案 2 :(得分:2)

您可以使用stack.Any()。所有IEnumerable<T>对象的快速,可读且标准的方式。

答案 3 :(得分:0)

共有三种常见的方法,您通常会使用哪种方法只是出于品味。

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

剖析不同的方法looks like this

Benchmark

.Any().Count()的时间是.Count的10倍至20倍...,并且仍然可以在每毫秒内运行数万次。因此.Count > 0“快得多”,但是其他大多数人仍然足够快而不必担心。我个人会坚持使用Any(),因为我觉得它读起来更好,但是我不会给任何人选择Count的机会。