Stack Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.