Stack Clase

Definición

Representa una colección simple de objetos no genéricos de la última entrada en salir (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
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.

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

Comentarios

La capacidad de es Stack 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 Colecciones no genéricas no deben usarse 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 acepta null como un valor válido y permite elementos duplicados.

Constructores

Nombre Description
Stack()

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

Stack(ICollection)

Inicializa una nueva instancia de la Stack clase 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 Stack clase que está vacía y tiene la capacidad inicial especificada o la capacidad inicial predeterminada, lo que sea mayor.

Propiedades

Nombre Description
Count

Obtiene el número de elementos contenidos en .Stack

IsSynchronized

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

SyncRoot

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

Métodos

Nombre Description
Clear()

Quita todos los objetos de .Stack

Clone()

Crea una copia superficial de .Stack

Contains(Object)

Determina si un elemento está en .Stack

CopyTo(Array, Int32)

Copia el objeto Stack en una unidimensional Arrayexistente, empezando por el índice de matriz especificado.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un IEnumerator para .Stack

GetHashCode()

Actúa 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 Objectactual.

(Heredado de Object)
Peek()

Devuelve el objeto situado en la parte superior de Stack sin quitarlo.

Pop()

Quita y devuelve el objeto en la parte superior de Stack.

Push(Object)

Inserta un objeto en la parte superior de Stack.

Synchronized(Stack)

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

ToArray()

Copia en Stack una nueva matriz.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Métodos de extensión

Nombre Description
AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

OfType<TResult>(IEnumerable)

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

Se aplica a

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 el acceso concurrente.

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

La enumeración a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando se sincroniza una colección, otros subprocesos todavía pueden modificar la colección, lo que hace que el enumerador inicie una excepción. Para garantizar la seguridad de los subprocesos durante la enumeración, 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