C# File
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'attribut | Type | Description |
|---|---|---|
Count | int | Obtient le nombre d'éléments dans la file. |
SyncRoot | object | pour obtenir un objet permettant de synchroniser l'accès à la file (non générique). |
IsSynchronized | bool | Indique 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éthode | Type de retour | Description |
|---|---|---|
| Opérations sur les éléments | ||
Enqueue(object item) | void | Ajoute un élément à la fin de la file d'attente. |
Dequeue() | object | Supprime et retourne l'élément au début de la file d'attente. |
Peek() | object | Retourne l'élément au début de la file d'attente sans le supprimer. |
Clear() | void | Supprime tous les éléments de la file d'attente. |
| Vérification et copie | ||
Contains(object item) | bool | Dé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() | object | Crée une copie superficielle de la file d'attente actuelle. |
CopyTo(Array array, int index) | void | Copie 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() | IEnumerator | Retourne un énumérateur qui parcourt les éléments de la file d'attente. |
| Sécurité des threads | ||
Synchronized(Queue queue) | Queue | Retourne un wrapper de file d'attente thread-safe. |
Exemple
L'exemple suivant montre l'utilisation de Queue :
Exemple 1
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.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: Mautres extensions