如何检查Stack <T>是否为空

Bob*_*rov 24 c# stack is-empty

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

来自C++/Java背景,其中"堆栈"类通常具有某种专用的"空"方法,如Java - Stack.empty.

rec*_*ive 38

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

  • 仅供参考:在实践中,这并不重要,因为`Stack <T>`实现`ICollection`,在这种情况下`Enumerable.Count`也只使用`Count`属性. (8认同)

Str*_*ior 6

共有三种常见的方法,而您通常会使用哪种方法取决于您的口味。

if(!stack.Any()) ...
if(stack.Count() == 0) ...
if(stack.Count == 0) ...
Run Code Online (Sandbox Code Playgroud)

分析不同的方法如下所示

基准测试

.Any()并且.Count().Count... 花费的时间长10到20倍,并且仍然可以每毫秒运行数万次。所以.Count > 0是“更快”,但其他人仍然不够快,不必担心在大多数情况下。我个人会坚持,Any()因为我觉得它读起来更好,但是我不会给任何人选择的感觉Count