Stack Třída

Definice

Představuje jednoduchou kolekci objektů typu last-in-first-out (LIFO).

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
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Stack = class
    interface ICollection
    interface ICloneable
    interface IEnumerable
Public Class Stack
Implements ICollection
Public Class Stack
Implements ICloneable, ICollection
Dědičnost
Stack
Atributy
Implementuje

Příklady

Následující příklad ukazuje, jak vytvořit a přidat hodnoty do zásobníku a jak zobrazit jeho hodnoty.

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

Poznámky

Kapacita a Stack je počet prvků, které Stack může obsahovat. Vzhledem k tomu, že jsou prvky přidány do Stack, kapacita se automaticky zvýší podle potřeby prostřednictvím reallocation.

Důležité

Nedoporučujeme používat Stack třídu pro nový vývoj. Místo toho doporučujeme použít obecnou System.Collections.Generic.Stack<T> třídu. Další informace najdete v tématu Ne generické kolekce, které by se neměly používat na GitHub.

Pokud Count je menší než kapacita zásobníku, Push je O(1) operace. Pokud je potřeba zvýšit kapacitu tak, aby vyhovovala novému prvku, Push stane se O(n) operace, kde n je Count. PopO(1) je operace.

Stack přijímá null jako platnou hodnotu a umožňuje duplicitní prvky.

Konstruktory

Stack()

Inicializuje novou instanci Stack třídy, která je prázdná a má výchozí počáteční kapacitu.

Stack(ICollection)

Inicializuje novou instanci Stack třídy, která obsahuje prvky zkopírované ze zadané kolekce a má stejnou počáteční kapacitu jako počet zkopírovaných prvků.

Stack(Int32)

Inicializuje novou instanci Stack třídy, která je prázdná a má zadanou počáteční kapacitu nebo výchozí počáteční kapacitu, podle toho, co je větší.

Vlastnosti

Count

Získá počet elementů obsažených v objektu Stack.

IsSynchronized

Získá hodnotu označující, zda je přístup k ho Stack synchronizován (bezpečné vlákno).

SyncRoot

Získá objekt, který lze použít k synchronizaci přístupu k Stack.

Metody

Clear()

Odebere všechny objekty z objektu Stack.

Clone()

Vytvoří použádnou kopii .Stack

Contains(Object)

Určuje, zda je prvek v objektu Stack.

CopyTo(Array, Int32)

Stack Zkopíruje do existujícího jednorozměrného Arrayindexu počínaje zadaným indexem pole.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetEnumerator()

IEnumerator Vrátí hodnotu pro Stack.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
Peek()

Vrátí objekt v horní části objektu Stack bez jeho odebrání.

Pop()

Odebere a vrátí objekt v horní části objektu Stack.

Push(Object)

Vloží objekt v horní části objektu Stack.

Synchronized(Stack)

Vrátí synchronizovaný (bezpečný vlákno) obálku Stackpro .

ToArray()

Zkopíruje ho Stack do nového pole.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky zadaného IEnumerable typu.

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable založené na zadaném typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede na IEnumerable IQueryable.

Platí pro

Bezpečný přístup z více vláken

Veřejné statické členy tohoto typu (Sharedv Visual Basic) jsou bezpečné pro vlákno. U členů instancí není zaručena bezpečnost pro přístup z více vláken.

Chcete-li zaručit bezpečnost Stackvlákna , všechny operace musí být provedeny prostřednictvím obálky vrácené metodou Synchronized(Stack) .

Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.

Viz také