C# Queue 队列使用 foreach 遍历的正确方式与注意事项

花开有时
花开有时
发布时间:2026-10-14| 3人浏览过
原创

在 C# 开发中,Queue(队列)是一种先进先出(FIFO)的数据结构。本文将演示如何使用 foreach 循环安全地遍历 Queue 中的元素,涵盖传统非泛型队列与现代泛型队列的代码实现及潜在的类型转换问题。

结果或目标

成功创建一个 Queue 对象,向其中添加整数元素,并通过 foreach 语句逐个读取并输出这些值,同时展示基本的出队和清空操作。

准备条件

  • 开发环境:安装 .NET SDK 或 Visual Studio。
  • 命名空间:需要引入 System 和 System.Collections(用于非泛型队列)或 System.Collections.Generic(用于泛型队列)。

真实操作顺序

第1步:引入必要的命名空间

如果使用传统的非泛型队列(继承自 ICollection),需要引用 System.Collections。这允许你处理 object 类型的元素。

using System;
using System.Collections;

第2步:初始化队列并添加元素

实例化一个 Queue 对象。构造函数可以指定初始容量以提高性能,但通常直接使用默认构造函数即可。使用 Enqueue 方法将数据推入队列尾部。

Queue a = new Queue(10); // 设置初始容量为10
int x = 0;
a.Enqueue(x); // 推入 0
x++;
a.Enqueue(x); // 推入 1

注意:在非泛型队列中,所有元素都以 object 形式存储。如果在遍历时直接声明具体类型变量(如 int y),编译器可能会报错或运行时抛出异常,除非显式进行类型转换。

第3步:使用 foreach 遍历队列

这是核心步骤。foreach 语句会自动迭代队列中的每个元素。对于非泛型队列,返回的元素类型为 object,因此通常需要将其转换为实际数据类型(如 (int))。

由于原始草稿中的代码直接对非泛型队列使用 foreach (int y in a),这在严格模式下可能导致编译错误(因为无法隐式将 object 转为 int)。更稳健的写法是先将元素转换为对象再使用,或者推荐使用泛型队列。

以下是修正后的非泛型遍历写法:

// 必须将 object 强制转换为 int
foreach (object obj in a)
{
    Console.WriteLine((int)obj);
}

第4步:执行出队与清空操作

遍历完成后,可以使用 Dequeue 移除并返回队首元素,或使用 Clear 清空整个队列。

a.Dequeue(); // 移除并返回队首元素(即第一个加入的 0)
a.Clear();   // 清空队列中所有剩余元素

现代 C# 推荐:使用泛型 Queue

为了避免装箱/拆箱开销和类型转换错误,建议在实际项目中始终使用 Queue<T>(泛型队列)。其用法如下:

using System.Collections.Generic;

Queue<int> q = new Queue<int&gt();
q.Enqueue(10);
q.Enqueue(20);

// foreach 自动识别类型,无需转换
foreach (int num in q)
{
    Console.WriteLine(num);
}

完成判断

运行程序后,控制台应依次打印出队列中加入的数字(如 0, 1),随后无错误或异常退出。若使用泛型版本,则完全避免了类型转换隐患。

简要总结

遍历 C# Queue 时,foreach 是最简洁的方式。务必注意区分非泛型 System.Collections.Queue 和泛型 System.Collections.Generic.Queue<T>。后者是当前的标准做法,因为它提供了类型安全和更好的性能。以上就是 C# 使用 foreach 语句遍历队列的详细教程,更多关于 C# 集合框架的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。