简介

先进先出(FIFO)的数据结构,如队列(Queue),确保最先添加的元素将会最先被移除。在C#中,System.Collections.Queue​ 类提供了两个关键操作来体现这种特性:Enqueue​ 和 Dequeue​。

  1. Enqueue:此操作用于将元素添加到队列的末尾。如果队列已满,则根据具体情况可能会抛出异常或返回错误。

  2. Dequeue:此操作用于移除并返回队列开头的元素。如果队列为空,则根据具体情况可能会抛出异常或返回默认值。

下面是一个简单的示例,演示了如何使用这两个操作:

using System;
using System.Collections;
class Program
{
    static void Main()
    {
        Queue myQueue = new Queue();
        // 使用 Enqueue 添加元素到队列
        myQueue.Enqueue("第一个");
        myQueue.Enqueue("第二个");
        myQueue.Enqueue("第三个");
        // 使用 Dequeue 移除并返回队列开头的元素
        Console.WriteLine("从队列中移除的元素:{0}", myQueue.Dequeue()); // 输出:从队列中移除的元素:第一个
        // 再次使用 Dequeue 移除并返回队列开头的元素
        Console.WriteLine("从队列中移除的元素:{0}", myQueue.Dequeue()); // 输出:从队列中移除的元素:第二个
        // 队列现在包含的元素
        Console.WriteLine("队列中的元素:{0}", string.Join(", ", myQueue.ToArray())); // 输出:队列中的元素:第三个
    }
}

在这个示例中,我们首先使用 Enqueue​ 方法将三个元素添加到队列中。然后,我们使用 Dequeue​ 方法两次,每次都移除并返回队列开头的元素。正如预期的那样,队列首先返回并移除了 "第一个" 元素,然后是 "第二个" 元素。每次 Dequeue​ 操作后,队列中的元素数量都会减少,直到队列为空。

基本操作

在C#中,System.Collections.Queue​ 类实现了队列数据结构。以下是一些基本的队列操作:

  1. Enqueue: 将对象添加到队列的末尾。

    queue.Enqueue(item);
    
  2. Dequeue: 移除并返回队列开头的对象。

    object obj = queue.Dequeue();
    
  3. Peek: 返回队列开头的对象,但不将其移除。

    object obj = queue.Peek();
    
  4. Clear: 从队列中移除所有对象。

    queue.Clear();
    
  5. Contains: 检查队列中是否包含特定对象。

    bool contains = queue.Contains(item);
    
  6. ToArray: 将队列的元素复制到新数组中。

    object[] array = queue.ToArray();
    
  7. TrimExcess: 将队列容量减少到队列中元素的实际数量。

    queue.TrimExcess();
    
  8. Count: 获取队列中元素的数量。

    int count = queue.Count;
    
  9. IsEmpty: 检查队列是否为空。

    bool isEmpty = queue.IsEmpty();
    
  10. GetEnumerator: 返回遍历队列的枚举器。

    IEnumerator enumerator = queue.GetEnumerator();
    

在实际应用中,队列常用于任务调度、缓冲处理、流水线操作等场景。