C# Queue用法详解(附带实例)
队列(queue)是一个线性的数据结构,特色是从一端插入数据至队列,插入数据至队列的动作称为 enqueue;从队列另一端读取(或取出)数据,读取队列数据称为 dequeue,数据读取后就将数据从队列中移除。
由于每一笔数据都从一端进入队列,从另一端离开队列,因此整个过程有先进先出(first in first out)的特征。
队列执行过程读者可以想象为,当进入麦当劳点餐时,柜台端接受不同客户点餐,先点的餐点会先被处理,供客户享用,同时此已供应的餐点就会从点餐流程中移除。
如果要创建 Queue 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
如果要创建 Queue 对象,同时将指定项目复制至此对象,则可以使用下列语法:
【实例 1】创建元素是字符串的 Queue 对象,然后输出。
【实例 2】创建 Queue 对象然后输出元素个数。
【实例 3】创建队列数据,然后测试 Enqueue() 和 Dequeue() 方法。
【实例 4】测试 Contains() 方法。
由于每一笔数据都从一端进入队列,从另一端离开队列,因此整个过程有先进先出(first in first out)的特征。

队列执行过程读者可以想象为,当进入麦当劳点餐时,柜台端接受不同客户点餐,先点的餐点会先被处理,供客户享用,同时此已供应的餐点就会从点餐流程中移除。

C# Queue对象的创建
如果只是创建 Queue 对象,则可以使用下列语法:Queue<T> 对象名称 = new Queue<T>();
如果要创建 Queue 对象,同时还要设定此对象的容量,则可以增加 Int32 参数,详情可以参考下列语法:
Queue<T> 对象名称 = new Queue<T>(Int32);
如果要创建 Queue 对象,同时将指定项目复制至此对象,则可以使用下列语法:
Queue<T> 对象名称 = new Queue<T>(IEnumerable<T>);
【实例 1】创建元素是字符串的 Queue 对象,然后输出。
string[] str = new string[] { "one", "five", "ten" }; Queue<string> number = new Queue<string>(str); foreach (var n in number) Console.Write($"{n} ");执行结果
one five ten
C# Queue的属性
Queue 的属性为 Count,其可以获得 Queue 对象的元素个数。【实例 2】创建 Queue 对象然后输出元素个数。
string[] books = { "C语言入门教程", "C++基础教程", "Python基础教程" }; Queue<string> mybooks = new Queue<string>(books); Console.WriteLine($"Queue元素数量:{mybooks.Count}");执行结果
Queue元素数量:3
C# Queue的方法
Queue 的常用方法如下:方法名称 | 描述 |
---|---|
Queue<T>.Enqueue(T) | 在队列增加元素。 |
Queue<T>.Dequeue() | 读取和移除队列前端元素。 |
Queue<T>.Peek() | 读取队列前端元素,但是不移除此元素。 |
Queue<T>.Contains(T) | 回传元素是否存在,如果存在则回传 true,反之则回传 false。 |
Queue<T>.Clear() | 清除所有元素。 |
Queue<T>.ToArray(T) | 将队列复制到数组。 |
Queue<T>.CopyTo(T[] array, int arrayIndex) | 复制队列到数组指定索引位置。 |
【实例 3】创建队列数据,然后测试 Enqueue() 和 Dequeue() 方法。
Queue<string> numbers = new Queue<string>(); numbers.Enqueue("one"); numbers.Enqueue("two"); numbers.Enqueue("three"); Console.WriteLine($"队列元素数量:{numbers.Count}"); Console.WriteLine($"Peek() 资料:{numbers.Peek()}"); Console.WriteLine($"Peek()后队列元素数量:{numbers.Count}"); Console.WriteLine($"Dequeue() 资料:{numbers.Dequeue()}"); Console.WriteLine($"Dequeue()后队列元素数量:{numbers.Count}"); Console.WriteLine($"Dequeue() 资料:{numbers.Dequeue()}");执行结果为:
队列元素数量:3
Peek() 资料:one
Peek()后队列元素数量:3
Dequeue() 资料:one
Dequeue()后队列元素数量:2
Dequeue() 资料:two
【实例 4】测试 Contains() 方法。
Queue<int> queue = new Queue<int>(); queue.Enqueue(1); queue.Enqueue(2); queue.Enqueue(3); Console.WriteLine($"queue.Contains(2):{queue.Contains(2)}"); Console.WriteLine($"queue.Contains(4):{queue.Contains(4)}");执行结果为:
queue.Contains(2):True
queue.Contains(4):False