Stack Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa uma coleção não genérica simples UEPS (último a entrar, primeiro a sair) de objetos.
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
- Herança
-
Stack
- Atributos
- Implementações
Exemplos
O exemplo a seguir mostra como criar e adicionar valores a uma Pilha e como exibir seus valores.
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
Comentários
A capacidade de um Stack é o número de elementos que o Stack pode conter. À medida que os elementos são adicionados a um Stack, a capacidade é aumentada automaticamente conforme necessário por meio da realocação.
Importante
Não recomendamos que você use a Stack
classe para desenvolvimento novo. Em vez disso, recomendamos que você use a classe genérica System.Collections.Generic.Stack<T> . Para obter mais informações, consulte Coleções não genéricas não devem ser usadas no GitHub.
Se Count for menor que a capacidade da pilha, Push será uma O(1)
operação. Se a capacidade precisar ser aumentada para acomodar o novo elemento, Push se tornará uma O(n)
operação, em que n
é Count. Pop é uma O(1)
operação .
Stack aceita null
como um valor válido e permite elementos duplicados.
Construtores
Stack() |
Inicializa uma nova instância da classe Stack que está vazia e tem a capacidade inicial padrão. |
Stack(ICollection) |
Inicializa uma nova instância da classe Stack, que contém os elementos copiados da coleção especificada e tem a mesma capacidade inicial que o número de elementos copiados. |
Stack(Int32) |
Inicializa uma nova instância da classe Stack que está vazia e tem a capacidade inicial especificada ou a capacidade inicial padrão, a que for maior. |
Propriedades
Count |
Obtém o número de elementos contidos no Stack. |
IsSynchronized |
Obtém um valor que indica se o acesso à Stack é sincronizado (thread-safe). |
SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso ao Stack. |
Métodos
Clear() |
Remove todos os objetos da Stack. |
Clone() |
Cria uma cópia superficial do Stack. |
Contains(Object) |
Determina se um elemento está no Stack. |
CopyTo(Array, Int32) |
Copia o Stack para uma Array de uma dimensão existente, começando no índice de matriz especificado. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetEnumerator() |
Retorna um IEnumerator para o Stack. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
Peek() |
Retorna o objeto na parte superior do Stack sem removê-lo. |
Pop() |
Remove e retorna o objeto na parte superior do Stack. |
Push(Object) |
Insere um objeto na parte superior do Stack. |
Synchronized(Stack) |
Retorna um wrapper sincronizado (thread-safe) para o Stack. |
ToArray() |
Copia o Stack em uma nova matriz. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Métodos de Extensão
Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |
Aplica-se a
Acesso thread-safe
Os membros estáticos públicos (Shared
no Visual Basic) desse são thread-safe. Não há garantia de que qualquer membro de instância seja seguro para threads.
Para garantir a segurança de thread do Stack, todas as operações devem ser feitas por meio do wrapper retornado pelo Synchronized(Stack) método .
A enumeração por meio de uma coleção não é um procedimento thread-safe intrínseco. Mesmo quando uma coleção está sincronizada, outros threads ainda podem modificar a coleção, o que faz o enumerador lançar uma exceção. Para garantir thread-safe durante a enumeração, é possível bloquear a coleção durante toda a enumeração ou verificar as exceções resultantes das alterações feitas por outros threads.