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
|
Stack (Clase)
Representa una colección simple no genérica de objetos último en entrar, primero en salir (LIFO).
Ensamblado: mscorlib (en mscorlib.dll)
El tipo Stack expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
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. |
| Nombre | Descripción | |
|---|---|---|
|
Count | Obtiene el número de elementos incluidos en Stack. |
|
IsSynchronized | Obtiene un valor que indica si el acceso a Stack está sincronizado (es seguro para la ejecución de subprocesos). |
|
SyncRoot | Obtiene un objeto que se puede utilizar para sincronizar el acceso a Stack. |
| Nombre | Descripción | |
|---|---|---|
|
Clear | Quita todos los objetos de la colección Stack. |
|
Clone | Crea una copia superficial de la colección Stack. |
|
Contains | Determina si un elemento se encuentra en la colección Stack. |
|
CopyTo | Copia la colección Stack en un objeto Array unidimensional existente, a partir del índice especificado de la matriz. |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
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). |
|
GetEnumerator | Devuelve una interfaz IEnumerator para la colección Stack. |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda 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 | Inserta un objeto al principio de Stack. |
|
Synchronized | 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. (Se hereda de Object). |
| Nombre | Descripción | |
|---|---|---|
|
AsParallel | Habilita la paralelización de una consulta. (Definido por ParallelEnumerable). |
|
AsQueryable | Convierte una interfaz IEnumerable en IQueryable. (Definido por Queryable). |
|
Cast<TResult> | Convierte los elementos de IEnumerable en el tipo especificado. (Definido por Enumerable). |
|
OfType<TResult> | Filtra los elementos de IEnumerable en función de un tipo especificado. (Definido por Enumerable). |
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 */
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.
{
//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();
}
- 23/05/2012
- ponchi_89