0
A
回答
3
可以使用实现它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
但是,如果你发现youself试图访问堆栈通过索引上的元素,那你肯定是做错了什么,和你应该重新设计你的解决方案。
0
如Matias所示,可以使用ElementAt()。您也可以使用Peek查看顶部的内容,而不用弹出它。您也可以转换为数组并通过索引获取值。
var s = new Stack<int>();
s.Push(1);
s.Push(2);
var value = s.ToArray()[1];
你应该问自己,这是否明智,但。您将能够做的就是在某个时间点获取堆栈的快照。还有一些并发问题需要考虑。
UPDATE:
好像马蒂亚斯,我想出了非常相似的答案。对于问题的问题,他是一个更正确的答案。 ToArray()方法为您提供一致的快照,可能会更加稳定。随后对ElementAt()的调用可能会给你不同的答案,并且如果堆栈已经在调用之间弹出,可能会引发异常。
+0
可以通过做'ElementAt' – TheDude
0
可以通过调用ElementAt(Int32)或ElementAtOrDefault(Int32)方法按索引选择堆栈的元素。
作为一个侧面说明,如果你是新来的C#,总是试图在
1)MSDN 2找到答案)referencesource.microsoft.com
它通常的方式更快,更可靠然后寻找信息上SO =)
相关问题
- 1. 如何获得使用C#的堆栈中的当前索引#
- 2. 如何通过xdebug中的api调用获取堆栈跟踪?
- 3. 获取堆栈跟踪不通过USB
- 4. 如何通过索引从C#中的OrderedDictionary获取密钥?
- 5. NASM - 获取堆栈中的项数
- 6. 如何在windows中获取c中的调用堆栈?
- 7. 索引混淆堆栈LIFO
- 8. 使用C++,如何获取msvc中堆栈指针的值X64
- 9. 从C中的任何线程获取调用堆栈C
- 10. 获取堆栈帧
- 11. 如何获取通过提取添加到Backbone集合的项目的索引?
- 12. 通过QML中C++模型的索引获取数据
- 13. 如何通过模板中的索引获取字段?
- 14. 如何通过索引获取ng-repeat中的元素?
- 15. 如何删除不在C#中堆栈顶部的堆栈项目
- 16. 通过JTable的索引获取行
- 17. 如何通过名称使用WebElement硒获取表中列的索引C#
- 18. 在堆栈的ArrayList中,如果堆栈为空,为什么索引不正确?
- 19. C++从std :: exception获取调用堆栈
- 20. 如何通过索引获取SQLite中的行(不是通过id)
- 21. Openpyxl如何通过索引从工作表中获取行
- 22. 如何通过索引从字符串中获取char?
- 23. 检查C++中Lua堆栈项的值
- 24. 堆栈列一行通过
- 25. c中的实现通用堆栈
- 26. C++(GCC):未定义的引用`堆栈<int> ::堆栈(INT)”
- 27. 美味 - 通过API获取链接堆栈
- 28. jQuery通过索引获取数组值
- 29. 通过索引获取文件名
- 30. 如何在Visual C++调试器中获取堆栈帧的所有堆栈分配变量的大小?
我可能是错误的,但堆栈在C#实现为一个数组和两个位置可变的开始和结束(https://msdn.microsoft.com/en-us/library/ms379571(v=vs.80 )的.aspx)。 如果这是真的,我没有看到问题得到按索引元素类似于简单数组中发生的元素。 更重要的是,我很惊讶Stack中没有这样的方法,你必须通过Linq扩展来完成。 –