除了Stack<T>.Count() == 0
之外,是否有其他方法可以检查Stack<T>
是否为空?
来自C ++ / Java背景,其中&#34; stack&#34;课程通常有某种专用的#34;是空的&#34;像Java - Stack.empty这样的方法。
答案 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:
.Any()
和.Count()
的时间是.Count
的10倍至20倍...,并且仍然可以在每毫秒内运行数万次。因此.Count > 0
“快得多”,但是其他大多数人仍然足够快而不必担心。我个人会坚持使用Any()
,因为我觉得它读起来更好,但是我不会给任何人选择Count
的机会。