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擴展來完成。 –