Ler en inglés

Compartir por


Stack Clase

Definición

Representa una colección de objetos no genérica de último en entrar es el primero en salir (LIFO).

C#
public class Stack : System.Collections.ICollection
C#
public class Stack : ICloneable, System.Collections.ICollection
C#
[System.Serializable]
public class Stack : ICloneable, System.Collections.ICollection
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Stack : ICloneable, System.Collections.ICollection
Herencia
Stack
Atributos
Implementaciones

Ejemplos

En el ejemplo siguiente se muestra cómo crear y agregar valores a una pila y cómo mostrar sus valores.

C#
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
*/

Comentarios

La capacidad de un Stack es el número de elementos que Stack puede contener. A medida que se agregan elementos a , Stackla capacidad aumenta automáticamente según sea necesario mediante la reasignación.

Importante

No se recomienda usar la Stack clase para el nuevo desarrollo. En su lugar, se recomienda usar la clase genérica System.Collections.Generic.Stack<T> . Para obtener más información, consulte No se deben usar colecciones no genéricas en GitHub.

Si Count es menor que la capacidad de la pila, Push es una O(1) operación. Si es necesario aumentar la capacidad para acomodar el nuevo elemento, Push se convierte en una O(n) operación, donde n es Count. Pop es una O(1) operación.

Stack null acepta como un valor válido y permite elementos duplicados.

Constructores

Stack()

Inicializa una nueva instancia de la clase Stack que está vacía y tiene la capacidad inicial predeterminada.

Stack(ICollection)

Inicializa una nueva instancia de la clase Stack que contiene elementos copiados de la colección especificada y tiene la misma capacidad inicial que el número de elementos copiados.

Stack(Int32)

Inicializa una nueva instancia de la clase Stack que está vacía y tiene la capacidad inicial especificada o la capacidad inicial predeterminada, la que sea mayor.

Propiedades

Count

Obtiene el número de elementos incluidos en Stack.

IsSynchronized

Obtiene un valor que indica si el acceso a la interfaz Stack está sincronizado (es seguro para subprocesos).

SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a Stack.

Métodos

Clear()

Quita todos los objetos de la colección Stack.

Clone()

Crea una copia superficial de la colección Stack.

Contains(Object)

Determina si un elemento se encuentra en Stack.

CopyTo(Array, Int32)

Copia el Stack a un Array unidimensional existente, empezando por el índice especificado de la matriz.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve una interfaz IEnumerator para la interfaz Stack.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
Peek()

Devuelve el objeto situado al principio de Stack sin eliminarlo.

Pop()

Quita y devuelve el objeto situado al principio de Stack.

Push(Object)

Inserta un objeto al principio de Stack.

Synchronized(Stack)

Devuelve un contenedor sincronizado (seguro para subprocesos) para la clase Stack.

ToArray()

Copia Stack en una nueva matriz.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Métodos de extensión

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a

Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Seguridad para subprocesos

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Para garantizar la seguridad de subprocesos de Stack, todas las operaciones deben realizarse a través del contenedor devuelto por el Synchronized(Stack) método .

Enumerar una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos todavía pueden modificarla, lo que hace que el enumerador produzca una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.

Consulte también