Stack Klas

Definitie

Vertegenwoordigt een eenvoudige, laatste in-first-out (LIFO) niet-generieke verzameling objecten.

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
Overname
Stack
Kenmerken
Implementeringen

Voorbeelden

In het volgende voorbeeld ziet u hoe u waarden maakt en toevoegt aan een stack en hoe u de bijbehorende waarden weergeeft.

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

Opmerkingen

De capaciteit van een Stack is het aantal elementen dat de Stack kan bevatten. Als er elementen aan een Stackworden toegevoegd, wordt de capaciteit automatisch verhoogd als vereist via herlocatie.

Belangrijk

We raden u niet aan om de Stack klasse te gebruiken voor nieuwe ontwikkeling. In plaats daarvan raden we u aan de algemene System.Collections.Generic.Stack<T> klasse te gebruiken. Zie Aangenaamde verzamelingen niet worden gebruikt op GitHub voor meer informatie.

Als Count de capaciteit van de stack kleiner is dan de capaciteit, Push is dit een O(1) bewerking. Als de capaciteit moet worden verhoogd om het nieuwe element aan te kunnen, Push wordt het een O(n) bewerking, waar n dat is Count. Pop is een O(1) bewerking.

Stack null accepteert als een geldige waarde en staat dubbele elementen toe.

Constructors

Name Description
Stack()

Initialiseert een nieuw exemplaar van de Stack klasse die leeg is en heeft de standaardinitiële capaciteit.

Stack(ICollection)

Initialiseert een nieuw exemplaar van de Stack klasse die elementen bevat die zijn gekopieerd uit de opgegeven verzameling en heeft dezelfde initiële capaciteit als het aantal gekopieerde elementen.

Stack(Int32)

Initialiseert een nieuw exemplaar van de Stack klasse die leeg is en heeft de opgegeven initiële capaciteit of de standaardinitiële capaciteit, afhankelijk van wat groter is.

Eigenschappen

Name Description
Count

Hiermee haalt u het aantal elementen op dat is opgenomen in de Stack.

IsSynchronized

Hiermee wordt een waarde opgehaald die aangeeft of de toegang tot de Stack synchronisatie is gesynchroniseerd (thread safe).

SyncRoot

Hiermee haalt u een object op dat kan worden gebruikt om de toegang tot het Stackobject te synchroniseren.

Methoden

Name Description
Clear()

Hiermee verwijdert u alle objecten uit de Stack.

Clone()

Maakt een ondiepe kopie van de Stack.

Contains(Object)

Bepaalt of een element zich in de Stack.

CopyTo(Array, Int32)

Kopieert de Stack naar een bestaande eendimensionale Array, beginnend bij de opgegeven matrixindex.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetEnumerator()

Retourneert een IEnumerator voor de Stack.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
Peek()

Retourneert het object boven aan het Stack object zonder het te verwijderen.

Pop()

Hiermee wordt het object boven aan het Stackobject verwijderd en geretourneerd.

Push(Object)

Hiermee wordt een object boven aan het Stackobject ingevoegd.

Synchronized(Stack)

Retourneert een gesynchroniseerde (thread safe) wrapper voor de Stack.

ToArray()

Hiermee kopieert u de Stack naar een nieuwe matrix.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op

Veiligheid thread

Openbare statische (Shared in Visual Basic) leden van dit type zijn thread-veilig. Exemplaarleden zijn niet gegarandeerd thread-safe.

Om de veiligheid van de Stackdraad te garanderen, moeten alle bewerkingen worden uitgevoerd via de wrapper die door de Synchronized(Stack) methode wordt geretourneerd.

Het inventariseren via een verzameling is intrinsiek geen thread-veilige procedure. Zelfs wanneer een verzameling wordt gesynchroniseerd, kunnen andere threads de verzameling nog steeds wijzigen, waardoor de enumerator een uitzondering genereert. Om de veiligheid van threads tijdens de inventarisatie te garanderen, kunt u de verzameling vergrendelen tijdens de volledige inventarisatie of de uitzonderingen ondervangen die het gevolg zijn van wijzigingen die door andere threads zijn aangebracht.

Zie ook