Stack Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en enkel lifo-samling (last-in-first-out) som inte är generisk.
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
- Arv
-
Stack
- Attribut
- Implementeringar
Exempel
I följande exempel visas hur du skapar och lägger till värden i en stack och hur du visar dess värden.
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
Kommentarer
Kapaciteten för en Stack är antalet element som Stack kan hållas. När element läggs till i en Stackökar kapaciteten automatiskt efter behov genom omallokering.
Important
Vi rekommenderar inte att du använder Stack klassen för ny utveckling. I stället rekommenderar vi att du använder den allmänna System.Collections.Generic.Stack<T> klassen. Mer information finns i Non-generic samlingar bör inte användas på GitHub.
Om Count är mindre än stackens Push kapacitet är en O(1) åtgärd. Om kapaciteten behöver ökas för att rymma det nya elementet Push blir en O(n) åtgärd, där n är Count.
Pop är en O(1) åtgärd.
Stack
null accepterar som ett giltigt värde och tillåter duplicerade element.
Konstruktorer
| Name | Description |
|---|---|
| Stack() |
Initierar en ny instans av Stack klassen som är tom och har standardinitieringskapaciteten. |
| Stack(ICollection) |
Initierar en ny instans av Stack klassen som innehåller element som kopierats från den angivna samlingen och har samma initiala kapacitet som antalet kopierade element. |
| Stack(Int32) |
Initierar en ny instans av Stack klassen som är tom och har den angivna initiala kapaciteten eller den ursprungliga standardkapaciteten, beroende på vilket som är störst. |
Egenskaper
| Name | Description |
|---|---|
| Count |
Hämtar antalet element som finns i Stack. |
| IsSynchronized |
Hämtar ett värde som anger om åtkomsten Stack till är synkroniserad (trådsäker). |
| SyncRoot |
Hämtar ett objekt som kan användas för att synkronisera åtkomsten Stacktill . |
Metoder
| Name | Description |
|---|---|
| Clear() |
Tar bort alla objekt från Stack. |
| Clone() |
Skapar en ytlig kopia av Stack. |
| Contains(Object) |
Avgör om ett element finns i Stack. |
| CopyTo(Array, Int32) |
Kopierar Stack till ett befintligt endimensionellt Array, med början vid det angivna matrisindexet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetEnumerator() |
Returnerar ett IEnumerator för Stack. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Peek() |
Returnerar objektet överst i Stack utan att ta bort det. |
| Pop() |
Tar bort och returnerar objektet överst i Stack. |
| Push(Object) |
Infogar ett objekt överst i Stack. |
| Synchronized(Stack) |
Returnerar en synkroniserad (trådsäker) omslutning för Stack. |
| ToArray() |
Kopierar Stack till en ny matris. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
Tilläggsmetoder
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Möjliggör parallellisering av en fråga. |
| AsQueryable(IEnumerable) |
Konverterar en IEnumerable till en IQueryable. |
| Cast<TResult>(IEnumerable) |
Omvandlar elementen i en IEnumerable till den angivna typen. |
| OfType<TResult>(IEnumerable) |
Filtrerar elementen i en IEnumerable baserat på en angiven typ. |
Gäller för
Trådsäkerhet
Offentliga statiska (Shared i Visual Basic) medlemmar av den här typen är trådsäkra. Vilka som helst instansmedlemmar garanteras inte att vara trådsäkra.
För att garantera trådsäkerheten för Stackmåste alla åtgärder utföras via omslutningen som returneras av Synchronized(Stack) metoden.
Att räkna upp genom en samling är i sig inte en trådsäker procedur. Även när en samling synkroniseras kan andra trådar fortfarande ändra samlingen, vilket gör att uppräknaren genererar ett undantag. För att garantera trådsäkerheten under uppräkningen kan du antingen låsa samlingen under hela uppräkningen eller fånga undantagen från ändringar som gjorts av andra trådar.