Stack Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa uma coleção simples de objetos não genérica (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
[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
- Herança
-
Stack
- Atributos
- Implementações
Exemplos
O exemplo seguinte mostra como criar e adicionar valores a uma pilha e como mostrar os seus valores.
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
Observações
A capacidade de a Stack é o número de elementos que Stack podem dever. À medida que elementos são adicionados a um Stack, a capacidade é automaticamente aumentada conforme necessário através da realocação.
Important
Não recomendamos que uses a Stack disciplina para novos desenvolvimentos. Em vez disso, recomendamos que use a classe genérica System.Collections.Generic.Stack<T> . Para mais informações, veja Não devem ser usadas coleções não genéricas em GitHub.
Se Count for inferior à capacidade da pilha, Push é uma O(1) operação. Se a capacidade tiver de ser aumentada para acomodar o novo elemento, Push torna-se uma O(n) operação, onde n é Count.
Pop é uma O(1) operação.
Stack aceita null como valor válido e permite elementos duplicados.
Construtores
| Name | Description |
|---|---|
| Stack() |
Inicializa uma nova instância da Stack classe que está vazia e tem a capacidade inicial padrão. |
| Stack(ICollection) |
Inicializa uma nova instância da Stack classe que contém 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 Stack classe que está vazia e tem a capacidade inicial especificada ou a capacidade inicial padrão, o que for maior. |
Propriedades
| Name | Description |
|---|---|
| Count |
Obtém o número de elementos contidos no Stack. |
| IsSynchronized |
Recebe um valor que indica se o acesso ao Stack é sincronizado (thread safe). |
| SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso ao Stack. |
Métodos
| Name | Description |
|---|---|
| Clear() |
Remove todos os objetos do Stack. |
| Clone() |
Cria uma cópia superficial do Stack. |
| Contains(Object) |
Determina se um elemento pertence ao Stack. |
| CopyTo(Array, Int32) |
Copia o Stack para uma unidimensional Arrayexistente , começando no índice especificado do array. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetEnumerator() |
Retorna e IEnumerator para o Stack. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| Peek() |
Devolve o objeto no topo do Stack sem o remover. |
| Pop() |
Remove e devolve o objeto no topo do Stack. |
| Push(Object) |
Insere um objeto no topo do Stack. |
| Synchronized(Stack) |
Devolve um wrapper sincronizado (thread safe) para o Stack. |
| ToArray() |
Copia para Stack um novo array. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Métodos da Extensão
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Permite a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable para um IQueryable. |
| Cast<TResult>(IEnumerable) |
Conjura os elementos de an IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base num tipo especificado. |
Aplica-se a
Segurança de Thread
Os membros estáticos públicos (Shared em Visual Basic) deste tipo são seguros para threads. Qualquer membro de instância não é garantido que seja seguro contra threads.
Para garantir a segurança da thread do Stack, todas as operações devem ser feitas através do invólucro devolvido pelo Synchronized(Stack) método.
Enumerar através de uma coleção não é, intrinsecamente, um procedimento seguro para threads. Mesmo quando uma coleção está sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador lance uma exceção. Para garantir a segurança dos threads durante a enumeração, pode bloquear a coleção durante toda a enumeração ou apanhar as exceções resultantes de alterações feitas por outros threads.