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 simples de objetos não genéricos (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 a seguir mostra como criar e adicionar valores a uma Pilha e como exibir 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
Comentários
A capacidade de um Stack é o número de elementos que podem Stack conter. À medida que os elementos são adicionados a um Stack, a capacidade é automaticamente aumentada conforme necessário por meio da realocação.
Importante
Não recomendamos que você use a Stack classe para um novo desenvolvimento. 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 que 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 torna-se uma O(n) operação, onde n está Count.
Pop é uma O(1) operação.
Stack
null aceita como um valor válido e permite elementos duplicados.
Construtores
| Nome | 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
| Nome | Description |
|---|---|
| Count |
Obtém o número de elementos contidos no Stack. |
| IsSynchronized |
Obtém 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
| Nome | Description |
|---|---|
| Clear() |
Remove todos os objetos do Stack. |
| Clone() |
Cria uma cópia superficial do Stack. |
| Contains(Object) |
Determina se um elemento está no Stack. |
| CopyTo(Array, Int32) |
Copia para Stack um unidimensional Arrayexistente, 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 hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (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 a Stack matriz para uma nova. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Métodos de Extensão
| Nome | Description |
|---|---|
| AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |
| 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. |
Aplica-se a
Acesso thread-safe
Membros estáticos públicos (Shared no Visual Basic) desse tipo são thread safe. Não há garantia de que quaisquer membros de instância sejam thread-safe.
Para garantir a segurança do thread, Stacktodas as operações devem ser feitas por meio do wrapper retornado pelo Synchronized(Stack) método.
Enumerar por meio de uma coleção não é intrinsecamente um procedimento thread-safe. Mesmo quando uma coleção é sincronizada, outros threads ainda podem modificar a coleção, o que faz com que o enumerador gere uma exceção. Para garantir a segurança do thread durante a enumeração, você pode bloquear a coleção durante toda a enumeração ou capturar as exceções resultantes de alterações feitas por outros threads.