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 Last-in-First-out-Auflistung (LIFO) von Objekten dar.
public ref class Stack : System::Collections::ICollection
public ref class Stack : ICloneable, System::Collections::ICollection
public class Stack : System.Collections.ICollection
public class Stack : ICloneable, 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
type Stack = class
interface ICollection
interface IEnumerable
type Stack = class
interface ICollection
interface IEnumerable
interface ICloneable
[<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
Public Class Stack
Implements ICollection
Public Class Stack
Implements ICloneable, ICollection
- Vererbung
-
Stack
- Attribute
- Implementiert
Beispiele
Im folgenden Beispiel wird gezeigt, wie Sie Werte erstellen und zu einem Stapel hinzufügen und wie die zugehörigen Werte angezeigt werden.
using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
// Creates and initializes a new Stack.
Stack^ myStack = gcnew 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 );
}
void PrintValues( IEnumerable^ myCollection )
{
IEnumerator^ myEnum = myCollection->GetEnumerator();
while ( myEnum->MoveNext() )
{
Object^ obj = safe_cast<Object^>(myEnum->Current);
Console::Write( " {0}", obj );
}
Console::WriteLine();
}
/*
This code produces the following output.
myStack
Count: 3
Values: ! World Hello
*/
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 Stack ist die Anzahl der Elemente, die enthalten Stack sein können. Wenn Elemente zu einem Stackhinzugefügt werden, wird die Kapazität automatisch bei Bedarf durch Neuzuweisung erhöht.
Wichtig
Es wird nicht empfohlen, die Stack
-Klasse für die Neuentwicklung zu verwenden. Stattdessen wird empfohlen, die generische System.Collections.Generic.Stack<T> Klasse zu verwenden. Weitere Informationen finden Sie unter Nicht generische Auflistungen sollten nicht auf GitHub verwendet werden.
Wenn Count kleiner als die Kapazität des Stapels ist, Push ist ein O(1)
Vorgang. Wenn die Kapazität erhöht werden muss, um das neue Element aufzunehmen, Push wird zu einem O(n)
Vorgang, wobei n
ist Count. Pop ist ein O(1)
Vorgang.
Stack akzeptiert null
als gültigen Wert und lässt doppelte Elemente zu.
Konstruktoren
Stack() |
Initialisiert eine neue, leere Instanz der Stack-Klasse, die die Standardanfangskapazität aufweist. |
Stack(ICollection) |
Initialisiert eine neue Instanz der Stack-Klasse, die aus der angegebenen Auflistung kopierte Elemente enthält und deren anfängliche Kapazität der Anzahl der kopierten Elemente entspricht. |
Stack(Int32) |
Initialisiert eine neue, leere Instanz der Stack-Klasse, die über die angegebene anfängliche Kapazität, mindestens aber über die anfängliche Standardkapazität verfügt. |
Eigenschaften
Count |
Ruft die Anzahl der Elemente ab, die in Stack enthalten sind. |
IsSynchronized |
Ruft einen Wert ab, der angibt, ob der Zugriff auf die Stack synchronisiert (threadsicher) ist. |
SyncRoot |
Ruft ein Objekt ab, mit dem der Zugriff auf Stack synchronisiert werden kann. |
Methoden
Clear() |
Entfernt alle Objekte aus dem Stack. |
Clone() |
Erstellt eine flache Kopie von Stack. |
Contains(Object) |
Bestimmt, ob sich ein Element in Stack befindet. |
CopyTo(Array, Int32) |
Kopiert die Stack in ein vorhandenes eindimensionales Array, beginnend ab dem angegebenen Arrayindex. |
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetEnumerator() |
Gibt einen IEnumerator für das Stackzurück. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Peek() |
Gibt das oberste Objekt von Stack zurück, ohne es zu entfernen. |
Pop() |
Entfernt das Objekt oben im Stack und gibt es zurück. |
Push(Object) |
Fügt ein Objekt am Anfang des Stack ein. |
Synchronized(Stack) |
Gibt einen synchronisierten (threadsicheren) Wrapper für Stack zurück. |
ToArray() |
Kopiert Stack in ein neues Array. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Erweiterungsmethoden
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |
Gilt für:
Threadsicherheit
Öffentliche statische (Shared
in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Um die Threadsicherheit von Stackzu gewährleisten, müssen alle Vorgänge über den von der Synchronized(Stack) -Methode zurückgegebenen Wrapper erfolgen.
Die Enumeration einer Auflistung ist systemintern keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, besteht die Möglichkeit, dass andere Threads sie ändern. Dies führt dazu, dass der Enumerator eine Ausnahme auslöst. Um während der Enumeration Threadsicherheit zu gewährleisten, können Sie entweder die Auflistung während der gesamten Enumeration sperren oder die Ausnahmen, die aus von anderen Threads stammenden Änderungen resultieren, abfangen.