Ich bin neu in C#. Ist es möglich, Stack-Einträge per Index zu bekommen, wie wir es in Listen in C# tun können?Wie stapelt man Artikel nach Index in C#?
Danke,
Ich bin neu in C#. Ist es möglich, Stack-Einträge per Index zu bekommen, wie wir es in Listen in C# tun können?Wie stapelt man Artikel nach Index in C#?
Danke,
Sie erreichen es mit 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
Wenn Sie jedoch youself die Elemente versuchen, finden durch den Index auf einen Stapel zugreifen zu können, dann werden Sie sicherlich etwas falsch zu machen, und Sie sollten Ihre Lösung neu gestalten.
Es ist möglich, ElementAt() zu verwenden, wie von Matias gezeigt. Sie können Peek auch verwenden, um zu sehen, was oben ist, ohne es zu knacken. Sie können auch in ein Array konvertieren und erhalten so einen Wert nach Index.
var s = new Stack<int>();
s.Push(1);
s.Push(2);
var value = s.ToArray()[1];
Sie sollten sich fragen, ob dies sinnvoll ist. Alles, was Sie jemals tun können, ist, einen Schnappschuss des Stapels zu einem bestimmten Zeitpunkt zu erstellen. Es gibt auch Nebenläufigkeitsprobleme zu berücksichtigen.
UPDATE:
Scheint, wie Matias und ich kam mit sehr ähnlichen Antworten auf. Er ist eine richtigere Antwort darauf, was die Frage verlangt. Der ToArray() - Ansatz gibt Ihnen einen konsistenten Snapshot, der möglicherweise etwas stabiler ist. Nachfolgende Aufrufe von ElementAt() geben möglicherweise andere Antworten und können eine Ausnahme auslösen, wenn der Stapel zwischen den Aufrufen eingefügt wurde.
Dies ist möglich, indem man 'ElementAt' ausführt – TheDude
Es ist möglich, das Element des Stapels nach Index auszuwählen, indem die Methoden ElementAt (Int32) oder ElementAtOrDefault (Int32) aufgerufen werden.
Als Seite beachten, wenn Sie C# vertraut sind, versuchen immer, Antworten zu finden auf
1) MSDN 2) referencesource.microsoft.com
Es ist oft viel schneller und zuverlässiger dann auf nach Informationen suchen SO =)
Ich kann falsch liegen, aber Stack in C# als Array implementiert und zwei Positionen Variable Start und Ende (https://msdn.microsoft.com/en-us/library/ms379571(v=vs.80) .aspx). Wenn das stimmt, sehe ich das Problem nicht, ein Element nach Index auf ähnliche Weise zu erhalten, wie es in einem einfachen Array passiert. Mehr zu sagen, ich war überrascht, dass es keine solche Methode im Stack selbst gibt und Sie müssen es über Linq-Erweiterung tun. –