Stack Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.