Cicero:如何在 C#中通过索引获取堆栈项目

我是新来的 C #。是否有可能通过索引获得堆栈项目,就像我们可以在 C # 中的列表?

谢谢

10

您可以使用 LINQ 实现它:

Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
stack.Push(3);
stack.Push(4);
int top = stack.ElementAt(0); // Returns 4
int next = stack.ElementAt(1); // Returns 3

但是,如果你发现自己试图通过索引访问堆栈上的元素,那么你肯定做错了什么,你应该重新设计你的解决方案。

0

可以使用 ElementAt (),如 Matias 所示。您也可以使用 Peek 查看顶部的内容,而不会弹出它。您也可以转换为数组并通过索引获取值那种方式。

var s = new Stack<int>();
s.Push(1);
s.Push(2);
var value = s.ToArray()[1];

不过,你应该问问自己这是否明智。你所能做的就是在某个时间点获得 Stack 的快照。还有并发问题需要考虑。

UPDATE:

似乎像 Matias 和我想出了非常相似的答案。他是一个更正确的答案是什么问题问。ToArray () 方法给你一个一致的快照,可能会更稳定一点。随后调用 ElementAt () 可能会给你不同的答案,如果堆栈在调用之间已弹出,可能会抛出异常。

0

通过调用ElementAt<T>(Int32)ElementAtOrDefault(Int32)方法,可以通过索引选择堆栈的元素。

作为一个侧面说明,如果你是新的 C #,总是试图找到答案

MSDN github referencesource.microsoft.com

它通常比在 SO =) 上查找信息更快、更可靠

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(445)
如何安装cd驱动器:如何判断光盘驱动器(不是光盘)是CD还是DVD驱动器
上一篇
听译软件:小软件补丁如何纠正大软件 (big patches)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(31条)