Aracılığıyla paylaş


Queue Sınıf

Tanım

İ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:

  • Enqueue öğesinin Queuesonuna bir öğesi ekler.

  • Dequeue en eski öğeyi öğesinin Queuebaşından kaldırır.

  • Peek başındaki en eski öğeyi Queue döndürür, ancak öğesinden Queuekaldırmaz.

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.

Ayrıca bkz.