Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Stack (Clase)

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

System.Object
  System.Collections.Stack

Espacio de nombres:  System.Collections
Ensamblado:  mscorlib (en mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public class Stack : ICollection, IEnumerable, 
	ICloneable

El tipo Stack expone los siguientes miembros.

  Nombre Descripción
Método público Compatible con XNA Framework Stack() Inicializa una nueva instancia de la clase Stack que está vacía y tiene la capacidad inicial predeterminada.
Método público Compatible con XNA Framework 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.
Método público Compatible con XNA Framework 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.
Arriba
  Nombre Descripción
Propiedad pública Compatible con XNA Framework Count Obtiene el número de elementos incluidos en Stack.
Propiedad pública Compatible con XNA Framework IsSynchronized Obtiene un valor que indica si el acceso a Stack está sincronizado (es seguro para la ejecución de subprocesos).
Propiedad pública Compatible con XNA Framework SyncRoot Obtiene un objeto que se puede utilizar para sincronizar el acceso a Stack.
Arriba
  Nombre Descripción
Método público Compatible con XNA Framework Clear Quita todos los objetos de la colección Stack.
Método público Compatible con XNA Framework Clone Crea una copia superficial de la colección Stack.
Método público Compatible con XNA Framework Contains Determina si un elemento se encuentra en la colección Stack.
Método público Compatible con XNA Framework CopyTo Copia la colección Stack en un objeto Array unidimensional existente, a partir del índice especificado de la matriz.
Método público Compatible con XNA Framework Equals(Object) Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegido Compatible con XNA Framework Finalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método público Compatible con XNA Framework GetEnumerator Devuelve una interfaz IEnumerator para la colección Stack.
Método público Compatible con XNA Framework GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de Object).
Método público Compatible con XNA Framework GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método protegido Compatible con XNA Framework MemberwiseClone Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método público Compatible con XNA Framework Peek Devuelve el objeto situado al principio de Stack sin eliminarlo.
Método público Compatible con XNA Framework Pop Quita y devuelve el objeto situado al principio de Stack.
Método público Compatible con XNA Framework Push Inserta un objeto al principio de Stack.
Método público Miembro estático Compatible con XNA Framework Synchronized Devuelve un contenedor sincronizado (seguro para subprocesos) para la clase Stack.
Método público Compatible con XNA Framework ToArray Copia Stack en una nueva matriz.
Método público Compatible con XNA Framework ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).
Arriba
  Nombre Descripción
Método de extensión público AsParallel Habilita la paralelización de una consulta. (Definido por ParallelEnumerable).
Método de extensión público AsQueryable Convierte una interfaz IEnumerable en IQueryable. (Definido por Queryable).
Método de extensión público Compatible con XNA Framework Cast<TResult> Convierte los elementos de IEnumerable en el tipo especificado. (Definido por Enumerable).
Método de extensión público Compatible con XNA Framework OfType<TResult> Filtra los elementos de IEnumerable en función de un tipo especificado. (Definido por Enumerable).
Arriba

Para obtener la versión genérica de esta colección, vea System.Collections.Generic.Stack<T>.

Stack se implementa como un búfer circular.

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

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

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

En el ejemplo siguiente se muestra cómo crear y agregar valores a Stack y cómo imprimirlos.


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



.NET Framework

Compatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

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

Para garantizar la seguridad en la ejecución de los subprocesos de Stack, todas las operaciones se deben realizar mediante el contenedor devuelto por el método Synchronized.

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. Para garantizar la seguridad de los subprocesos durante la enumeración, es posible bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.

¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar
Clase pila (stack)
static void Main(string[] args)
        {
            //Escribir un programa que introduzca 5 números en una pila de enteros para, a continuación, realizar las siguientes operaciones:
            Stack pila = new Stack();

            pila.Push(1);
            pila.Push(2);
            pila.Push(3);
            pila.Push(4);
            pila.Push(5);
            
            //1. Mostrar la pila en consola
            Array temp = pila.ToArray();

            foreach (int i in temp)
            {
                Console.WriteLine(i);
            }
            
            //2. Mostrar el primer elemento de la pila sin extraerlo

            Console.WriteLine(pila.Peek());
            
            //3. Extraer los dos primeros elementos de la pila

            Console.WriteLine(pila.Pop());
            Console.WriteLine(pila.Pop());

            Console.ReadKey();
        }