Bagikan melalui


Stack Kelas

Definisi

Mewakili koleksi objek non-generik last-in-first-out (LIFO) sederhana.

public ref class Stack : System::Collections::ICollection
public ref class Stack : ICloneable, System::Collections::ICollection
public class Stack : System.Collections.ICollection
public class Stack : ICloneable, 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
type Stack = class
    interface ICollection
    interface IEnumerable
type Stack = class
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<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
Public Class Stack
Implements ICollection
Public Class Stack
Implements ICloneable, ICollection
Warisan
Stack
Atribut
Penerapan

Contoh

Contoh berikut menunjukkan cara membuat dan menambahkan nilai ke Tumpukan dan cara menampilkan nilainya.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
   
   // Creates and initializes a new Stack.
   Stack^ myStack = gcnew 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 );
}

void PrintValues( IEnumerable^ myCollection )
{
   IEnumerator^ myEnum = myCollection->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "    {0}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 myStack
     Count:    3
     Values:    !    World    Hello
 */
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

Keterangan

Kapasitas adalah Stack jumlah elemen yang dapat ditahan Stack . Karena elemen ditambahkan ke Stack, kapasitas secara otomatis ditingkatkan sesuai kebutuhan melalui realokasi.

Penting

Kami tidak menyarankan Anda menggunakan Stack kelas untuk pengembangan baru. Sebagai gantinya, kami sarankan Anda menggunakan kelas generik System.Collections.Generic.Stack<T> . Untuk informasi selengkapnya, lihat Koleksi non-generik tidak boleh digunakan di GitHub.

Jika Count kurang dari kapasitas tumpukan, Push adalah O(1) operasi. Jika kapasitas perlu ditingkatkan untuk mengakomodasi elemen baru, Push menjadi O(n) operasi, di mana n adalah Count. PopO(1) adalah operasi.

Stacknull menerima sebagai nilai yang valid dan memungkinkan elemen duplikat.

Konstruktor

Stack()

Menginisialisasi instans Stack baru kelas yang kosong dan memiliki kapasitas awal default.

Stack(ICollection)

Menginisialisasi instans Stack baru kelas yang berisi elemen yang disalin dari koleksi yang ditentukan dan memiliki kapasitas awal yang sama dengan jumlah elemen yang disalin.

Stack(Int32)

Menginisialisasi instans Stack baru kelas yang kosong dan memiliki kapasitas awal yang ditentukan atau kapasitas awal default, mana pun yang lebih besar.

Properti

Count

Mendapatkan jumlah elemen yang terkandung dalam Stack.

IsSynchronized

Mendapatkan nilai yang menunjukkan apakah akses ke disinkronkan Stack (utas aman).

SyncRoot

Mendapatkan objek yang dapat digunakan untuk menyinkronkan akses ke Stack.

Metode

Clear()

Menghapus semua objek dari Stack.

Clone()

Membuat salinan dangkal dari Stack.

Contains(Object)

Menentukan apakah elemen berada di Stack.

CopyTo(Array, Int32)

Stack Menyalin ke satu dimensi Arrayyang sudah ada, dimulai dari indeks array yang ditentukan.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetEnumerator()

Mengembalikan IEnumerator untuk Stack.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
Peek()

Mengembalikan objek di bagian Stack atas tanpa menghapusnya.

Pop()

Menghapus dan mengembalikan objek di bagian Stackatas .

Push(Object)

Menyisipkan objek di bagian Stackatas .

Synchronized(Stack)

Mengembalikan pembungkus yang disinkronkan (aman utas) untuk Stack.

ToArray()

Menyalin ke Stack array baru.

ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)

Metode Ekstensi

Cast<TResult>(IEnumerable)

Mentransmisikan elemen dari IEnumerable ke jenis yang ditentukan.

OfType<TResult>(IEnumerable)

Memfilter elemen berdasarkan IEnumerable jenis tertentu.

AsParallel(IEnumerable)

Mengaktifkan paralelisasi kueri.

AsQueryable(IEnumerable)

Mengonversi menjadi IEnumerableIQueryable.

Berlaku untuk

Keamanan Thread

Anggota statis publik (Shared dalam Visual Basic) dari jenis ini aman untuk utas. Setiap anggota instans tidak dijamin aman untuk utas.

Untuk menjamin keamanan Stackutas , semua operasi harus dilakukan melalui pembungkus yang dikembalikan oleh Synchronized(Stack) metode .

Menghitung melalui koleksi secara intrinsik bukan prosedur aman utas. Bahkan ketika koleksi disinkronkan, utas lain masih dapat memodifikasi koleksi, yang menyebabkan enumerator melemparkan pengecualian. Untuk menjamin keamanan utas selama enumerasi, Anda dapat mengunci koleksi selama seluruh enumerasi atau menangkap pengecualian yang dihasilkan dari perubahan yang dibuat oleh utas lain.

Lihat juga