C# File

Collections C#

En C#, Queue est une structure de données premier entré, premier sorti (FIFO).

Queue appartient aux espaces de noms System.Collections ou System.Collections.Generic, qui fournissent respectivement des implémentations non génériques et génériques. Queue convient aux scénarios où les données doivent être traitées dans l'ordre dans lequel elles ont été mises en file d'attente.

Queue représente une collection d'objetspremier entré, premier sorti. Lorsque vous avez besoin d'un accès premier entré, premier sorti aux éléments, utilisez une file d'attente. Lorsque vous ajoutez un élément à la liste, cela s'appelleEnqueue, et lorsque vous supprimez un élément de la liste, cela s'appelleDéfiler。

Fonctionnalités

  • premier entré, premier sorti: l'élément qui a été ajouté à la file d'attente le plus tôt est retiré en premier.
  • Taille dynamique: la capacité de la file est ajustée dynamiquement selon les besoins.
  • Prise en charge des génériques: grâce àQueue<T>peut stocker des éléments fortement typés.
  • Sécurité des threads:Queuen'est pas thread-safe en soi, mais vous pouvez utiliserConcurrentQueue<T>Implémenter la sûreté des threads.

Méthodes et propriétés de la classe Queue

Le tableau ci-dessous répertorieQueueQuelques utilisations courantes de la classePropriété:

Nom de l'attributTypeDescription
CountintObtient le nombre d'éléments dans la file.
SyncRootobjectpour obtenir un objet permettant de synchroniser l'accès à la file (non générique).
IsSynchronizedboolIndique si l'accès à la file est synchronisé (thread-safe, toujoursfalse)。

Le tableau ci-dessous répertorieQueueQuelques utilisations courantes de la classeMéthodes:

Nom de la méthodeType de retourDescription
Opérations sur les éléments
Enqueue(object item)voidAjoute un élément à la fin de la file d'attente.
Dequeue()objectSupprime et retourne l'élément au début de la file d'attente.
Peek()objectRetourne l'élément au début de la file d'attente sans le supprimer.
Clear()voidSupprime tous les éléments de la file d'attente.
Vérification et copie
Contains(object item)boolDétermine si un élément est présent dans la file d'attente.
ToArray()object[]Copie les éléments de la file d'attente dans un nouveau tableau.
Clone()objectCrée une copie superficielle de la file d'attente actuelle.
CopyTo(Array array, int index)voidCopie les éléments de la file d'attente dans un tableau existant, à partir de l'index spécifié.
Prise en charge des énumérateurs
GetEnumerator()IEnumeratorRetourne un énumérateur qui parcourt les éléments de la file d'attente.
Sécurité des threads
Synchronized(Queue queue)QueueRetourne un wrapper de file d'attente thread-safe.

Exemple

L'exemple suivant montre l'utilisation de Queue :

Exemple 1

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        Queue queue = new Queue();

        // Ajouter des éléments
        queue.Enqueue("First");
        queue.Enqueue("Second");
        queue.Enqueue("Third");

        // Aperçu du début
        Console.WriteLine($"Peek: {queue.Peek()}"); // Sortie : First

        // Supprimer l'élément
        Console.WriteLine($"Dequeue: {queue.Dequeue()}"); // Sortie : First

        // Éléments restants
        foreach (var item in queue)
        {
            Console.WriteLine(item); // Sortie : Second, Third
        }

        // Vérifier la présence
        Console.WriteLine($"Contient 'Second' : {queue.Contains("Second")}"); // sortie : True

        // Convertir en tableau
        object[] array = queue.ToArray();
        Console.WriteLine($"Longueur du tableau : {array.Length}"); // Sortie : 2
    }
}

Exemple 2

using System;
using System.Collections;

namespace CollectionsApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         Queue q = new Queue();

         q.Enfiler('A');
         q.Enfiler('M');
         q.Enfiler('G');
         q.Enfiler('W');
         
         Console.WriteLine("File d'attente actuelle : ");
         foreach (char c in q)
            Console.Write(c + " ");
         Console.WriteLine();
         q.Enfiler('V');
         q.Enfiler('H');
         Console.WriteLine("File d'attente actuelle : ");        
         foreach (char c in q)
            Console.Write(c + " ");
         Console.WriteLine();
         Console.WriteLine("Suppression de quelques valeurs ");
         char ch = (char)q.Dequeue();
         Console.WriteLine("La valeur supprimée : {0}", ch);
         ch = (char)q.Dequeue();
         Console.WriteLine("La valeur supprimée : {0}", ch);
         Console.ReadKey();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

Current queue: 
A M G W 
Current queue: 
A M G W V H 
Removing values
The removed value: A
The removed value: M

Collections C#

autres extensions