En C#, comment puis-je vérifier si une file d'attente est vide ?
Je veux itérer à travers les éléments de la file d'attente et j'ai besoin de savoir quand m'arrêter. Comment puis-je y parvenir ?
En C#, comment puis-je vérifier si une file d'attente est vide ?
Je veux itérer à travers les éléments de la file d'attente et j'ai besoin de savoir quand m'arrêter. Comment puis-je y parvenir ?
En supposant que vous vouliez dire Queue
, vous pourriez simplement utiliser :
if (queue.Count != 0)
Mais pourquoi s'embêter? Parcourez-le de toute façon, et s'il est vide, vous ne rentrerez jamais dans le corps :
Queue queue = new Queue();
// Il est bon d'utiliser foreach...
foreach (string x in queue)
{
// Nous n'entrerons pas ici...
}
Notez que l'approche foreach ne fonctionne pas si vous devez ajouter des éléments à la file d'attente pendant que vous traitez la file d'attente (par exemple, si vous implémentez un algorithme de BFS) car alors l'énumérateur serait invalidé. Utiliser la propriété Count est la bonne façon de procéder dans ce scénario.
Alors quel est l'intérêt d'utiliser une file d'attente si vous ne supprimez pas les éléments par Dequeue?
@GregoryBad: myQueue.Count
ne comptera pas sur l'ensemble de la file d'attente. La taille est stockée dans une variable privée de la classe Queue que la propriété Count retourne simplement voir Propriété Queue.Count. Le Count auquel vous faites référence est Count() dans l'espace de noms linq. Enumerable.Count
@Rutix Même la méthode Enumerable.Count() est optimisée pour vérifier si elle peut être convertie en ICollection et renvoyer la propriété .Count sans énumérer.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Quelle file d'attente utilisez-vous? Veuillez poster la définition de la file d'attente.