Stack Klass

Definition

Representerar en enkel lifo-samling (last-in-first-out) som inte är generisk.

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
Arv
Stack
Attribut
Implementeringar

Exempel

I följande exempel visas hur du skapar och lägger till värden i en stack och hur du visar dess värden.

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

Kommentarer

Kapaciteten för en Stack är antalet element som Stack kan hållas. När element läggs till i en Stackökar kapaciteten automatiskt efter behov genom omallokering.

Important

Vi rekommenderar inte att du använder Stack klassen för ny utveckling. I stället rekommenderar vi att du använder den allmänna System.Collections.Generic.Stack<T> klassen. Mer information finns i Non-generic samlingar bör inte användas på GitHub.

Om Count är mindre än stackens Push kapacitet är en O(1) åtgärd. Om kapaciteten behöver ökas för att rymma det nya elementet Push blir en O(n) åtgärd, där n är Count. Pop är en O(1) åtgärd.

Stack null accepterar som ett giltigt värde och tillåter duplicerade element.

Konstruktorer

Name Description
Stack()

Initierar en ny instans av Stack klassen som är tom och har standardinitieringskapaciteten.

Stack(ICollection)

Initierar en ny instans av Stack klassen som innehåller element som kopierats från den angivna samlingen och har samma initiala kapacitet som antalet kopierade element.

Stack(Int32)

Initierar en ny instans av Stack klassen som är tom och har den angivna initiala kapaciteten eller den ursprungliga standardkapaciteten, beroende på vilket som är störst.

Egenskaper

Name Description
Count

Hämtar antalet element som finns i Stack.

IsSynchronized

Hämtar ett värde som anger om åtkomsten Stack till är synkroniserad (trådsäker).

SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten Stacktill .

Metoder

Name Description
Clear()

Tar bort alla objekt från Stack.

Clone()

Skapar en ytlig kopia av Stack.

Contains(Object)

Avgör om ett element finns i Stack.

CopyTo(Array, Int32)

Kopierar Stack till ett befintligt endimensionellt Array, med början vid det angivna matrisindexet.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar ett IEnumerator för Stack.

GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Peek()

Returnerar objektet överst i Stack utan att ta bort det.

Pop()

Tar bort och returnerar objektet överst i Stack.

Push(Object)

Infogar ett objekt överst i Stack.

Synchronized(Stack)

Returnerar en synkroniserad (trådsäker) omslutning för Stack.

ToArray()

Kopierar Stack till en ny matris.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Trådsäkerhet

Offentliga statiska (Shared i Visual Basic) medlemmar av den här typen är trådsäkra. Vilka som helst instansmedlemmar garanteras inte att vara trådsäkra.

För att garantera trådsäkerheten för Stackmåste alla åtgärder utföras via omslutningen som returneras av Synchronized(Stack) metoden.

Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.

Se även