Queue 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.
İlk giren ilk çıkar özellikli bir nesne koleksiyonunu temsil eder.
public ref class Queue : System::Collections::ICollection
public ref class Queue : ICloneable, System::Collections::ICollection
public class Queue : System.Collections.ICollection
public class Queue : ICloneable, System.Collections.ICollection
[System.Serializable]
public class Queue : ICloneable, System.Collections.ICollection
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class Queue : ICloneable, System.Collections.ICollection
type Queue = class
interface ICollection
interface IEnumerable
type Queue = class
interface ICollection
interface IEnumerable
interface ICloneable
[<System.Serializable>]
type Queue = class
interface ICollection
interface IEnumerable
interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Queue = class
interface ICollection
interface IEnumerable
interface ICloneable
Public Class Queue
Implements ICollection
Public Class Queue
Implements ICloneable, ICollection
- Devralma
-
Queue
- Öznitelikler
- Uygulamalar
Örnekler
Aşağıdaki örnekte, 'a nasıl değer Queue oluşturulup ekleneceği ve değerlerinin nasıl yazdırılacağını gösterilmektedir.
using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myCollection );
int main()
{
// Creates and initializes a new Queue.
Queue^ myQ = gcnew Queue;
myQ->Enqueue( "Hello" );
myQ->Enqueue( "World" );
myQ->Enqueue( "!" );
// Displays the properties and values of the Queue.
Console::WriteLine( "myQ" );
Console::WriteLine( "\tCount: {0}", myQ->Count );
Console::Write( "\tValues:" );
PrintValues( myQ );
}
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.
myQ
Count: 3
Values: Hello World !
*/
using System;
using System.Collections;
public class SamplesQueue {
public static void Main() {
// Creates and initializes a new Queue.
Queue myQ = new Queue();
myQ.Enqueue("Hello");
myQ.Enqueue("World");
myQ.Enqueue("!");
// Displays the properties and values of the Queue.
Console.WriteLine( "myQ" );
Console.WriteLine( "\tCount: {0}", myQ.Count );
Console.Write( "\tValues:" );
PrintValues( myQ );
}
public static void PrintValues( IEnumerable myCollection ) {
foreach ( Object obj in myCollection )
Console.Write( " {0}", obj );
Console.WriteLine();
}
}
/*
This code produces the following output.
myQ
Count: 3
Values: Hello World !
*/
Imports System.Collections
Public Class SamplesQueue
Public Shared Sub Main()
' Creates and initializes a new Queue.
Dim myQ As New Queue()
myQ.Enqueue("Hello")
myQ.Enqueue("World")
myQ.Enqueue("!")
' Displays the properties and values of the Queue.
Console.WriteLine("myQ")
Console.WriteLine(" Count: {0}", myQ.Count)
Console.Write(" Values:")
PrintValues(myQ)
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.
'
' myQ
' Count: 3
' Values: Hello World !
Açıklamalar
Bu sınıf bir kuyruğu döngüsel dizi olarak uygular. içinde depolanan nesneler bir Queue uca eklenir ve diğerinden kaldırılır.
Önemli
sınıfını Queue
yeni geliştirme için kullanmanızı önermiyoruz. Bunun yerine, genel Queue<T> sınıfı kullanmanızı öneririz. Daha fazla bilgi için bkz. GitHub'da genel olmayan koleksiyonlar kullanılmamalıdır .
Bilgi için geçici depolamaya ihtiyacınız olduğunda kuyruklar ve yığınlar yararlıdır; başka bir ifadeyle, bir öğeyi değerini aldıktan sonra atmak isteyebileceğiniz bir durumdur. Bilgilere koleksiyonda depolandığı sırada erişmeniz gerekiyorsa kullanın Queue . Bilgilere ters sırada erişmeniz gerekiyorsa kullanın Stack . Koleksiyona aynı anda birden çok iş parçacığından erişmeniz gerekiyorsa veya ConcurrentStack<T> kullanınConcurrentQueue<T>.
ve Queue öğeleri üzerinde üç ana işlem gerçekleştirilebilir:
bir Queue öğesinin kapasitesi, barındırabileceği öğelerin Queue sayısıdır. öğesine öğe eklendikçe Queue, kapasite yeniden konumlandırma yoluyla gerektiği gibi otomatik olarak artırılır. çağrılarak TrimToSizekapasite azaltılabilir.
Büyüme faktörü, daha büyük bir kapasite gerektiğinde geçerli kapasitenin çarpıldığı sayıdır. Büyüme faktörü, oluşturulurken Queue belirlenir. Varsayılan büyüme faktörü 2.0'dır. 'nin Queue kapasitesi, büyüme faktöründen bağımsız olarak her zaman en az dört artacaktır. Örneğin, büyüme faktörü 1,0 olan bir Queue , daha büyük bir kapasite gerektiğinde kapasitede her zaman dört artacaktır.
Queue geçerli bir değer olarak kabul eder null
ve yinelenen öğelere izin verir.
Bu koleksiyonun genel sürümü için bkz. System.Collections.Generic.Queue<T>
Oluşturucular
Queue() |
Sınıfının boş, varsayılan başlangıç kapasitesine sahip ve varsayılan büyüme faktörünü kullanan yeni bir örneğini Queue başlatır. |
Queue(ICollection) |
Belirtilen koleksiyondan kopyalanan öğeleri içeren sınıfının yeni bir örneğini Queue başlatır, kopyalanan öğelerin sayısıyla aynı başlangıç kapasitesine sahiptir ve varsayılan büyüme faktörünü kullanır. |
Queue(Int32) |
Boş olan, belirtilen ilk kapasiteye Queue sahip olan ve varsayılan büyüme faktörünü kullanan sınıfın yeni bir örneğini başlatır. |
Queue(Int32, Single) |
Boş, belirtilen başlangıç kapasitesine Queue sahip olan ve belirtilen büyüme faktörünü kullanan sınıfın yeni bir örneğini başlatır. |
Özellikler
Count |
Queue içindeki öğe sayısını alır. |
IsSynchronized |
erişimin Queue eşitlenip eşitlenmediğini belirten bir değer alır (iş parçacığı güvenli). |
SyncRoot |
erişimi Queueeşitlemek için kullanılabilecek bir nesnesi alır. |
Yöntemler
Clear() |
içindeki tüm nesneleri Queuekaldırır. |
Clone() |
öğesinin Queuesığ bir kopyasını oluşturur. |
Contains(Object) |
Bir öğenin içinde Queueolup olmadığını belirler. |
CopyTo(Array, Int32) |
Queue Öğeleri, belirtilen dizi dizininden başlayarak mevcut bir tek boyutlu Arrayöğesine kopyalar. |
Dequeue() |
öğesinin başındaki Queuenesnesini kaldırır ve döndürür. |
Enqueue(Object) |
sonuna bir nesnesi Queueekler. |
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetEnumerator() |
aracılığıyla Queueyineleyen bir numaralandırıcı 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 başındaki Queue nesnesini kaldırmadan döndürür. |
Synchronized(Queue) |
Özgün kuyruğu sarmalayan ve iş parçacığı güvenli olan yeni Queue bir döndürür. |
ToArray() |
Queue Öğeleri yeni bir diziye kopyalar. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
TrimToSize() |
Kapasiteyi içindeki gerçek öğe Queuesayısına ayarlar. |
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 Queuegaranti etmek için tüm işlemlerin yöntemi tarafından Synchronized(Queue) 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.