c#如何遍历数组_c#遍历数组完整教程与代码实例
C#数组遍历:选对工具,避开那些“看似简单”的坑 开门见山,先说结论:在C#里遍历数组,foreach通常是那个最顺手、最安全的选择,但它绝非一把万能钥匙。一旦你需要修改元素或者依赖索引位置,就必须请出for循环。至于while和Array.ForEach,它们更像是工具箱里的特种工具,只在特定场景
C#数组遍历:选对工具,避开那些“看似简单”的坑

开门见山,先说结论:在C#里遍历数组,foreach通常是那个最顺手、最安全的选择,但它绝非一把万能钥匙。一旦你需要修改元素或者依赖索引位置,就必须请出for循环。至于while和Array.ForEach,它们更像是工具箱里的特种工具,只在特定场景下闪光,生搬硬套反而会弄巧成拙。
什么时候必须用 for 循环
如果你需要在遍历时“动点手脚”——比如修改数组元素的值,或者你的逻辑严重依赖当前的下标位置(例如跳过偶数索引、进行两两交换、计算相邻元素的差值),那么foreach就无能为力了。原因很简单:foreach提供的是元素的只读副本,你改了它也影响不了原数组,而且它根本不暴露索引信息。
- 像
foreach (int x in arr) { x = 10; }这样的代码完全是徒劳,x只是个临时副本。 - 真正要干“实事”,比如反转数组、实现冒泡排序、或者把所有偶数下标的元素清零,都得靠
for (int i = 0; i < arr.Length; i++)这种经典结构。 - 这里有个关键细节:获取数组长度,
arr.Length是唯一可靠的来源。别误用了GetLength(0),那是为多维数组准备的。
foreach 的实际限制和坑点
foreach语法看似清爽,但一不小心就容易在类型转换和性能上栽跟头,特别是在处理int[]和object[]混用的场景时。
- 如果你对一个
int[]使用foreach (object o in arr),每次迭代都会触发一次“装箱”操作,性能就在不知不觉中流失了。正确的做法是明确类型:foreach (int x in arr)。 - 反过来,如果数组本身是
object[],里面可能装着各种类型,而你却写了foreach (string s in arr),那么运行时一旦遇到非字符串元素,就会毫不客气地抛出一个InvalidCastException。 - 另外,关于控制流,
break或continue在foreach循环体内当然可以使用,但如果你嵌套得太深,代码的可读性会急剧下降,这一点需要警惕。
别为了“函数式”硬用 Array.ForEach
Array.ForEach看起来挺有“函数式编程”的范儿,写起来也简洁。但实际上,它限制颇多、调试起来更费劲,而且无法提前退出循环,在90%的场景下,都不如老老实实写个for循环来得实在。
- 像
Array.ForEach(arr, x => Console.WriteLine(x));这样的简单输出没问题,但如果你想在遇到某个特定值(比如0)时就停止遍历?对不起,它做不到。 - 本质上,它只是封装了一个
for循环,并没有带来性能上的优势,反而额外增加了一层委托调用的开销。 - 它的泛型约束也比较死板,只适用于一维数组。对于更常用的
List,你得使用其自带的ForEach实例方法,千万别搞混了。 - 如果真想进行链式、声明式的数据处理,应该优先考虑LINQ中的
Select、Where等方法。不过切记:LINQ通常返回一个新的序列,而不会修改原始数组。
说到底,数组遍历的语法本身并不复杂。真正容易出问题的,往往是那种“你以为自己在遍历一个数组”的错觉。实际上,你操作的可能是一个IEnumerable包装器,它可能延迟执行,甚至可能被多次枚举。所以,比起死记硬背语法,时刻盯紧你的变量类型和数据源的本质,才是更重要的事。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













