English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Stack ist ein spezieller Sammlungstyp, der Elemente in LIFO-Form (Last In, First Out) speichert. C# beinhaltet den generischen Stack<T> und die nicht-generische Stack-Sammelklasse. Es wird empfohlen, den generischen Stack<T> zu verwenden.
Stacks sind sehr nützlich für das Speichern von temporären Daten in LIFO-Form und es kann erwünscht sein, sie nach dem Abrufen des Elementwertes zu löschen.
Stack<T> ist eine LIFO-Sammlung (Last In, First Out).
Es befindet sich im Namespace System.Collection.Generic.
Stack<T> kann Elemente der angegebenen Typen enthalten. Es bietet eine Typprüfung zur Compile-Zeit und führt keine Boxing durch./Unboxing, da es generisch ist.
Das Hinzufügen von Elementen kann mit dem Push()-Methoden erfolgen. Das Initialisieren mit einer Sammlung ist nicht erlaubt, da es generisch ist.-Initialisierer-Syntax.
Elemente können mit Pop() und Peek() abgerufen werden. Es wird kein Indexer unterstützt.
Sie können Objekte erstellen, indem Sie den Typ der Elemente, die von Stack<T> gespeichert werden, als Typparameter angeben. Im folgenden Beispiel werden Elemente im Stack <T> mit dem Push()-Method hinzugefügt. Der Stapel erlaubt null (für Referenztypen) und wiederholte Werte.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); foreach(var item in myStack) Console.Write(item + "," //Drucke4,3,2,1,
Sie können auch aus einem Array einen Stapel erstellen, wie folgt.
int[] arr = new int[]{ 1, 2, 3, 4}; Stack<int> myStack = new Stack<int>(arr); foreach(var item in myStack) Console.Write(item + "," //Drucke4,3,2,1,
Eigenschaft | Verwendung |
---|---|
Count | Gibt die Gesamtzahl der Elemente im Stapel zurück. |
Methode | Verwendung |
---|---|
Push(T) | Füge ein Projekt auf den Stapeloberen ein. |
Peek() | Gibt das Projekt vom Stapeloberen zurück. |
Pop() | Entferne und gibt das Projekt vom Stapeloberen zurück. |
Contains(T) | Überprüfe, ob es Projekte im Stapel gibt. |
Clear() | Entferne alle Projekte aus dem Stapel. |
Die Pop()-Methode gibt den letzten Element zurück und entfernt es vom Stapel. Wird der Stapel leer, wird eine InvalidOperationException ausgelöst. Daher sollten Sie immer überprüfen, ob es Elemente im Stapel gibt, bevor Sie die Pop()-Methode aufrufen.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Anzahl der Elemente im Stapel: {0}", myStack.Count); while(myStack.Count > 0) Console.Write(myStack.Pop(), + "," Console.Write("Anzahl der Elemente im Stapel: {0}", myStack.Count);
Anzahl der Elemente im Stapel:4 4,3,2,1, Anzahl der Elemente im Stapel: 0
Die Peek()-Methode gibt den zuletzt hinzugefügten Wert vom Stapel zurück, ohne ihn zu entfernen. Der Aufruf von Peek() auf einem leeren Stapel wirft eine InvalidOperationException aus. Daher sollten Sie immer überprüfen, ob es Elemente im Stapel gibt, bevor Sie die Peek()-Methode zum Abrufen eines Elements verwenden.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("Anzahl der Elemente im Stapel: {0}", myStack.Count);// Ausgabe 4 if(myStack.Count > 0){ Console.WriteLine(myStack.Peek()); // Ausgabe 4 Console.WriteLine(myStack.Peek()); // Ausgabe 4 } Console.Write("Anzahl der Elemente im Stapel: {0}", myStack.Count);// Ausgabe 4
Der Contains() Methode überprüft, ob das angegebene Element im Stack-Set existiert. Wenn es existiert, wird true zurückgegeben, andernfalls wird false zurückgegeben.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); myStack.Contains(2); // Rückgabe true myStack.Contains(10); // Rückgabe false