Stack Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt eine einfache nicht generische Auflistung von Objekten dar.
public ref class Stack : System::Collections::ICollection
public ref class Stack : ICloneable, System::Collections::ICollection
public class Stack : System.Collections.ICollection
[System.Serializable]
public class Stack : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Stack : ICloneable, System.Collections.ICollection
public class Stack : ICloneable, System.Collections.ICollection
type Stack = class
interface ICollection
interface IEnumerable
[<System.Serializable>]
type Stack = class
interface ICollection
interface IEnumerable
interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Stack = class
interface ICollection
interface IEnumerable
interface ICloneable
type Stack = class
interface ICollection
interface IEnumerable
interface ICloneable
Public Class Stack
Implements ICollection
Public Class Stack
Implements ICloneable, ICollection
- Vererbung
-
Stack
- Attribute
- Implementiert
Beispiele
Im folgenden Beispiel wird gezeigt, wie Sie einem Stapel Werte erstellen und hinzufügen und wie die zugehörigen Werte angezeigt werden.
using System;
using System.Collections;
public class SamplesStack {
public static void Main() {
// Creates and initializes a new Stack.
Stack myStack = new Stack();
myStack.Push("Hello");
myStack.Push("World");
myStack.Push("!");
// Displays the properties and values of the Stack.
Console.WriteLine( "myStack" );
Console.WriteLine( "\tCount: {0}", myStack.Count );
Console.Write( "\tValues:" );
PrintValues( myStack );
}
public static void PrintValues( IEnumerable myCollection ) {
foreach ( Object obj in myCollection )
Console.Write( " {0}", obj );
Console.WriteLine();
}
}
/*
This code produces the following output.
myStack
Count: 3
Values: ! World Hello
*/
Imports System.Collections
Public Class SamplesStack
Public Shared Sub Main()
' Creates and initializes a new Stack.
Dim myStack As New Stack()
myStack.Push("Hello")
myStack.Push("World")
myStack.Push("!")
' Displays the properties and values of the Stack.
Console.WriteLine("myStack")
Console.WriteLine(ControlChars.Tab & "Count: {0}", myStack.Count)
Console.Write(ControlChars.Tab & "Values:")
PrintValues(myStack)
End Sub
Public Shared Sub PrintValues(myCollection As IEnumerable)
Dim obj As [Object]
For Each obj In myCollection
Console.Write(" {0}", obj)
Next obj
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' myStack
' Count: 3
' Values: ! World Hello
Hinweise
Die Kapazität eines Elements Stack ist die Anzahl der Elemente, die aufbewahrt Stack werden können. Wenn Elemente zu einem StackElement hinzugefügt werden, wird die Kapazität bei Bedarf durch Umschichtung automatisch erhöht.
Important
Es wird nicht empfohlen, die Stack Klasse für die neue Entwicklung zu verwenden. Stattdessen wird empfohlen, die generische System.Collections.Generic.Stack<T> Klasse zu verwenden. Weitere Informationen finden Sie unter "Nicht generische Sammlungen", die nicht auf GitHub verwendet werden sollten .
Wenn Count die Kapazität des Stapels kleiner ist, Push handelt es sich um einen O(1) Vorgang. Wenn die Kapazität erhöht werden muss, um das neue Element aufzunehmen, Push wird dies zu einem O(n) Vorgang, in dem n sich dies befindet Count.
Pop ist ein O(1) Vorgang.
Stack akzeptiert null als gültigen Wert und lässt doppelte Elemente zu.
Konstruktoren
| Name | Beschreibung |
|---|---|
| Stack() |
Initialisiert eine neue Instanz der Klasse, die Stack leer ist und über die Standardkapazität verfügt. |
| Stack(ICollection) |
Initialisiert eine neue Instanz der Stack Klasse, die Elemente enthält, die aus der angegebenen Auflistung kopiert wurden, und verfügt über die gleiche Anfangskapazität wie die Anzahl der kopierten Elemente. |
| Stack(Int32) |
Initialisiert eine neue Instanz der Klasse, die Stack leer ist und über die angegebene Anfangskapazität oder die Standard-Anfangskapazität verfügt, je nachdem, welcher Wert größer ist. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Count |
Ruft die Anzahl der Elemente ab, die in der Stack. |
| IsSynchronized |
Ruft einen Wert ab, der angibt, ob der Zugriff auf die Stack synchronisiert wird (Threadsicher). |
| SyncRoot |
Ruft ein Objekt ab, das zum Synchronisieren des Zugriffs auf die Stackverwendet werden kann. |
Methoden
| Name | Beschreibung |
|---|---|
| Clear() |
Entfernt alle Objekte aus dem Stack. |
| Clone() |
Erstellt eine flache Kopie der .Stack |
| Contains(Object) |
Bestimmt, ob sich ein Element in der Stack. |
| CopyTo(Array, Int32) |
Kopiert den Wert Stack in einen vorhandenen eindimensionalen Array, beginnend am angegebenen Arrayindex. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetEnumerator() |
Gibt einen IEnumerator Wert für das Stack. |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Peek() |
Gibt das Objekt oben im Stack Objekt zurück, ohne es zu entfernen. |
| Pop() |
Entfernt das Objekt und gibt es am oberen Rand des StackObjekts zurück. |
| Push(Object) |
Fügt ein Objekt am oberen Rand der .Stack |
| Synchronized(Stack) |
Gibt einen synchronisierten (threadsicheren) Wrapper für den Stack. |
| ToArray() |
Kopiert das Stack Array in ein neues Array. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| AsParallel(IEnumerable) |
Aktiviert die Parallelisierung einer Abfrage. |
| AsQueryable(IEnumerable) |
Wandelt eine IEnumerable in eine IQueryableum. |
| Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um. |
| OfType<TResult>(IEnumerable) |
Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ. |
Gilt für:
Threadsicherheit
Öffentliche statische Elemente (Shared in Visual Basic) dieses Typs sind threadsicher. Instanzenmitglieder sind nicht garantiert threadsicher.
Um die Threadsicherheit des Threads Stackzu gewährleisten, müssen alle Vorgänge über den wrapper erfolgen, der von der Synchronized(Stack) Methode zurückgegeben wird.
Das Aufzählen durch eine Sammlung ist in erster Linie keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, können andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden.