Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • Observabilidade para agentes: por que logs e traces tradicionais já não bastam
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    • A Anatomia de um Prompt: Como Falar com a IA Como um Profissional de Tecnologia
    • Conheça os tipos de registros DNS: o guia completo sobre A, AAAA, NS, CNAME, MX, PTR, SOA, TXT, SRV, SPF e muito mais
    • Cache além do básico: por que LRU e TTL precisam andar juntos
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Filas com C# – Queue

    Filas com C# – Queue

    Jhonathan SoaresBy Jhonathan Soares10 de junho de 20192 Mins Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Pilhas e filas são úteis quando você precisar de armazenamento temporário para obter informações; ou seja, quando você talvez queira descartar um elemento após recuperar seu valor. Utilizando a classe Queue você poderá acessar as informações na mesma ordem em que ele é armazenado na coleção.

    Uma Fila representa uma coleção de objetos FIFO (first-in-first-out, primeiro a entrar, primeiro a sair). A classe Queue<T> no namespace System.Collection.Generic representa uma fila em C #, onde T especifica o tipo de elementos na fila. Neste artigo e exemplos de código, eu explico o construtor, propriedades e métodos da classe Queue e como usar seus vários métodos utilizando C#.

    Veja os exemplos:

      
       Console.WriteLine("Example 1 - Queue.Count Property");
       string[] courses = { "MCA", "MBA", "BCA", "BBA", "BTech", "MTech" };
       Queue<string> queue1 = new Queue<string>();
       queue1 = new Queue<string>(courses);
       Queue<string> queue2 = new Queue<string>(courses);
       Queue<string> queue3 = new Queue<string>(4);
       Console.WriteLine("Number of elements in queue 1:" + queue1.Count());
       Console.WriteLine("Number of elements in queue 2:" + queue2.Count());
       Console.WriteLine("Number of elements in queue 3:" + queue3.Count());
       Console.WriteLine();
    
    
       Console.WriteLine("Example 2 - Queue.Enqueue Method");
       Queue<string> queue4 = new Queue<string>();
       queue4.Enqueue("MCA");
       queue4.Enqueue("MBA");
       queue4.Enqueue("BCA");
       queue4.Enqueue("BBA");
       Console.WriteLine("The elements in the queue are:");
       foreach (string s in queue4)
       {
           Console.WriteLine(s);
       }
       Console.WriteLine();
    
    
       Console.WriteLine("Example 3 - Queue.Dequeue method");
       Queue<string> queue5 = new Queue<string>();
       queue5.Enqueue("MCA");
       queue5.Enqueue("MBA");
       queue5.Enqueue("BCA");
       queue5.Enqueue("BBA");
       Console.WriteLine("The elements in the queue are:");
       foreach (string s in queue5)
       {
           Console.WriteLine(s);
       }
       queue5.Dequeue(); //Removes the first element that enter in the queue here the first element is MCA  
       queue5.Dequeue(); //Removes MBA  
       Console.WriteLine("After removal the elements in the queue are:");
       foreach (string s in queue5)
       {
           Console.WriteLine(s);
       }
       Console.WriteLine();
    
       Console.WriteLine("Example 4 - Queue.Contain method");
       Queue<string> queue6 = new Queue<string>();
       queue6.Enqueue("MCA");
       queue6.Enqueue("MBA");
       queue6.Enqueue("BCA");
       queue6.Enqueue("BBA");
       Console.WriteLine("The elements in the queue are:");
       foreach (string s in queue6)
       {
           Console.WriteLine(s);
       }
       Console.WriteLine("The element MCA is contain in the queue:" + queue6.Contains("MCA"));
       Console.WriteLine("The element BCA is contain in the queue:" + queue6.Contains("BCA"));
       Console.WriteLine("The element MTech is contain in the queue:" + queue6.Contains("MTech"));
       Console.WriteLine();
    
    
       Console.WriteLine("Example 5 - Queue.Clear method");
       Queue<string> queue7 = new Queue<string>();
       queue7.Enqueue("MCA");
       queue7.Enqueue("MBA");
       queue7.Enqueue("BCA");
       queue7.Enqueue("BBA");
       Console.WriteLine("The elements in the queue are:" + queue7.Count());
       queue7.Clear();
       Console.WriteLine("The elements in the queue are after the clear method:" + queue7.Count());
       Console.WriteLine();
    
    
       Console.WriteLine("Example 6 - Queue.Peek method");
       Queue<string> queue8 = new Queue<string>();
       queue8.Enqueue("MCA");
       queue8.Enqueue("MBA");
       queue8.Enqueue("BCA");
       queue8.Enqueue("BBA");
       Console.WriteLine("Peek the first item from the queue is:" + queue8.Peek());
       queue8.Dequeue();
       Console.WriteLine("Peek the next item from the queue is:" + queue8.Peek());
       Console.WriteLine();
    
    
    
       Console.WriteLine("Example 7 - Queue.ToArray method");
       Queue<string> queue9 = new Queue<string>();
       queue9.Enqueue("MCA");
       queue9.Enqueue("MBA");
       queue9.Enqueue("BCA");
       queue9.Enqueue("BBA");
       Console.WriteLine("The queue elements are:");
       foreach (string s in queue9)
       {
           Console.WriteLine(s);
       }
       
       Queue<string> queue10 = new Queue<string>(queue9.ToArray());
       Console.WriteLine("Contents of the copy");
       
       foreach (string n in queue10)
       {
           Console.WriteLine(n);
       }
       Console.WriteLine();
       
       
    

    Três operações principais podem ser executadas em um Queue e seus elementos:

    Enqueue Adiciona um elemento ao final do Queue.

    Dequeue Remove o elemento mais antigo do início do Queue.

    Peek Retorna o elemento mais antigo que está no início do Queue , mas não o remove do Queue.

    A capacidade de um Queue é o número de elementos a Queue pode conter. Como os elementos são adicionados a um Queue, a capacidade é aumentada automaticamente conforme necessário por meio de realocação. A capacidade pode ser diminuída chamando TrimToSize.

    Como sabemos, Queue é FIFO, caso você queira utilizar LIFO, utilize a propriedade Stack se você precisar acessar as informações na ordem inversa da Queue.

    O código fonte se encontra no meu github

    Um grande abraço!

    Referências:
    https://docs.microsoft.com/pt-br/dotnet/api/system.collections.queue?view=netframework-4.8

    https://www.c-sharpcorner.com/members/richa-garg7

    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • Observabilidade para agentes: por que logs e traces tradicionais já não bastam
    • Context engineering: quando o problema deixa de ser prompt e vira arquitetura
    • Clean Code (2ª edição): o que mudou e o que continua valendo
    • Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha
    • Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis
    Categorias
    • Arquitetura (31)
      • Microsserviços (3)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (93)
      • NoSql (60)
      • Sql (38)
    • Boas práticas (35)
      • Gestão & Produtividade (5)
      • Metodologias Ágeis (6)
    • Cursos (53)
    • Dicas (108)
    • Front-End (92)
    • IA (8)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Código Simples no Facebook
    Código Simples no Facebook
    • Popular
    • Recente

    1000 livros gratuitos sobre programação!

    12 de fevereiro de 2016

    Google lança versão “invisível” do reCAPTCHA!

    10 de março de 2017

    Mini curso de HTML5 oferecido pela Microsoft

    30 de janeiro de 2014

    O que significa ( !important ) na declaração do CSS ?

    5 de fevereiro de 2014

    Programa para supercompactar arquivos. KGB Archiver.

    6 de fevereiro de 2014

    Observabilidade para agentes: por que logs e traces tradicionais já não bastam

    23 de abril de 2026

    Context engineering: quando o problema deixa de ser prompt e vira arquitetura

    16 de abril de 2026

    Clean Code (2ª edição): o que mudou e o que continua valendo

    12 de fevereiro de 2026

    Sunk Cost em Arquitetura de Software: como evitar que meses de investimento virem uma armadilha

    4 de fevereiro de 2026

    Guia Profissional de Prompting – Domando um ChatGPT Preguiçoso: Como Obter Respostas Completas, Profundas e Confiáveis

    30 de outubro de 2025
    Nosso Feed
    • RSS - Posts
    Fique por dentro

    Digite seu endereço de email para assinar este blog e receber notificações de novas publicações por email.

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile