Stack Sınıf

Tanım

Basit bir ilk çıkış (LIFO) genel olmayan nesne koleksiyonunu temsil eder.

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
Devralma
Stack
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki örnekte, bir Stack'e değer oluşturma ve ekleme ve değerlerini görüntüleme işlemleri gösterilmektedir.

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

Açıklamalar

'nin Stack kapasitesi, barındırabileceği öğelerin Stack sayısıdır. öğesine öğeler eklendikçe Stackkapasite, yeniden ayırma aracılığıyla gerektiği gibi otomatik olarak artırılır.

Important

Sınıfını yeni geliştirme için kullanmanızı Stack önermiyoruz. Bunun yerine genel System.Collections.Generic.Stack<T> sınıfı kullanmanızı öneririz. Daha fazla bilgi için bkz. GitHub'da genel olmayan koleksiyonlar kullanılmamalıdır .

Yığının kapasitesinden küçükse Count , Push bir O(1) işlemdir. Kapasitenin yeni öğeye uyum sağlamak için artırılması gerekiyorsa, Push bir O(n) işlem haline gelir; burada n olur Count. Pop bir O(1) işlemdir.

Stack geçerli bir değer olarak kabul eder null ve yinelenen öğelere izin verir.

Oluşturucular

Name Description
Stack()

Sınıfın Stack boş ve varsayılan başlangıç kapasitesine sahip yeni bir örneğini başlatır.

Stack(ICollection)

Belirtilen koleksiyondan kopyalanan öğeleri içeren ve kopyalanan öğe sayısıyla aynı başlangıç kapasitesine sahip olan sınıfın yeni bir örneğini Stack başlatır.

Stack(Int32)

Sınıfın Stack boş olan ve belirtilen ilk kapasiteye veya varsayılan ilk kapasiteye (hangisi daha büyükse) sahip yeni bir örneğini başlatır.

Özellikler

Name Description
Count

içinde Stackbulunan öğe sayısını alır.

IsSynchronized

'a Stack erişimin eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli).

SyncRoot

Stackerişimini eşitlemek için kullanılabilecek bir nesnesi alır.

Yöntemler

Name Description
Clear()

içindeki tüm nesneleri Stackkaldırır.

Clone()

öğesinin sığ bir kopyasını Stackoluşturur.

Contains(Object)

Bir öğenin içinde Stackolup olmadığını belirler.

CopyTo(Array, Int32)

Stack öğesini belirtilen dizi dizininden başlayarak varolan bir tek boyutlu Arrayöğesine kopyalar.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetEnumerator()

için IEnumeratorbir Stack döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectbasit bir kopyasını oluşturur.

(Devralındığı yer: Object)
Peek()

Öğesinin üstündeki Stack nesneyi kaldırmadan döndürür.

Pop()

öğesinin en üstündeki Stacknesnesini kaldırır ve döndürür.

Push(Object)

öğesinin en üstüne Stackbir nesne ekler.

Synchronized(Stack)

için eşitlenmiş (iş parçacığı güvenli) sarmalayıcı döndürür Stack.

ToArray()

öğesini Stack yeni bir diziye kopyalar.

ToString()

Geçerli nesneyi temsil eden bir dize döndürür.

(Devralındığı yer: Object)

Uzantı Metotları

Name Description
AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

bir IEnumerable öğesine IQueryabledönüştürür.

Cast<TResult>(IEnumerable)

öğesinin IEnumerable öğelerini belirtilen türe yazar.

OfType<TResult>(IEnumerable)

Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler.

Şunlara uygulanır

İş Parçacığı Güvenliği

Bu türün genel statik (Shared Visual Basic'te) üyeleri iş parçacığı güvenlidir. Hiçbir örnek üyesi için iş parçacığı güvenliği garanti edilmez.

öğesinin iş parçacığı güvenliğini Stackgaranti etmek için tüm işlemlerin yöntemi tarafından Synchronized(Stack) döndürülen sarmalayıcı aracılığıyla yapılması gerekir.

Bir koleksiyonda numaralandırma, iş parçacığı açısından güvenli bir yordam değildir. Bir koleksiyon eşitlendiğinde bile, diğer iş parçacıkları yine de koleksiyonu değiştirebilir ve bu da numaralandırıcının bir özel durum oluşturmasına neden olur. Numaralandırma sırasında iş parçacığı güvenliğini garanti etmek için, tüm numaralandırma sırasında koleksiyonu kilitleyebilir veya diğer iş parçacıkları tarafından yapılan değişikliklerden kaynaklanan özel durumları yakalayabilirsiniz.

Ayrıca bkz.