【发布时间】:2014-11-03 03:03:48
【问题描述】:
除了Stack<T>.Count() == 0,还有其他方法可以检查Stack<T> 是否为空?
来自 C++/Java 背景,其中“堆栈”类通常具有某种专用的“为空”方法,例如 Java - Stack.empty。
【问题讨论】:
-
恕我直言,这是一种非常易读且有效的方式。所以不,我不知道更好的方法,因为
Peek不是一个选项。 -
我相信你可以使用
Any。var notEmpty = stack.Any()。需要明确的是,就像@TimSchmelter 在下面所说的那样,这不如使用Count属性那么有效。 -
如果你真的想要 IsEmpty 或 Empty 那么你可以使用扩展方法,但这只是包装这个 Count == 0。我认为 Count 是完全可读的。
-
@AlexeiLevenkov:我可以为所有内容编写扩展。但在我看来,扩展有缺点,应该添加的不仅仅是简单的 Any to Count 翻译,这只是令人困惑。与其记住使用 Count 更好,不如记住必须使用扩展。