Stack Sınıf

Tanım

Son giren ilk çıkar (LIFO) özellikli, genel olmayan basit bir 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 Yığına değer oluşturma ve ekleme ve değerlerini görüntüleme işlemleri gösterilmektedir.

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

Açıklamalar

bir Stack öğesinin kapasitesi, barındırabileceği öğelerin Stack sayısıdır. öğesine öğe eklendikçe Stack, kapasite yeniden konumlandırma yoluyla gerektiği gibi otomatik olarak artırılır.

Önemli

sınıfını Stack yeni geliştirme için kullanmanızı ö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 bir PushO(1) işlemdir. Yeni öğeyi barındırmak için kapasitenin 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

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 öğelerin sayısıyla aynı başlangıç kapasitesine sahip olan sınıfının yeni bir örneğini Stack başlatır.

Stack(Int32)

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

Özellikler

Count

Stack içindeki öğe sayısını alır.

IsSynchronized

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

SyncRoot

erişimi Stackeşitlemek için kullanılabilecek bir nesnesi alır.

Yöntemler

Clear()

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

Clone()

öğesinin Stacksığ bir kopyasını oluşturur.

Contains(Object)

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

CopyTo(Array, Int32)

Stack belirtilen dizi dizininden başlayarak öğesini 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 Stackbir IEnumerator döndürür.

GetHashCode()

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

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

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

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

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

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

Öğesinin en ü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 dizeyi döndürür.

(Devralındığı yer: Object)

Uzantı Metotları

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

Öğesinin IEnumerable öğelerini belirtilen türe göre filtreler.

AsParallel(IEnumerable)

Sorgunun paralelleştirilmesini etkinleştirir.

AsQueryable(IEnumerable)

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

Şunlara uygulanır

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

Bu türün genel statik (Shared Visual Basic'te) üyeleri iş parçacığı güvenlidir. Örnek üyelerin iş parçacığı güvenli olmaları 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 koleksiyon ile numaralandırma, aslında iş parçacığı açısından güvenli yordam değildir. Bir koleksiyon eşitlendiği zaman bile, diğer iş parçacıkları numaralandırıcının özel durum oluşturmasına neden olan koleksiyonu değiştirebilir. Numaralandırma sırasında iş parçacığı güvenliği sağlamak 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.