您的位置:首页 >c#如何遍历数组_c#遍历数组完整教程与代码实例
发布于2026-05-02 阅读(0)
扫一扫,手机访问

开门见山,先说结论:在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.ForEachArray.ForEach看起来挺有“函数式编程”的范儿,写起来也简洁。但实际上,它限制颇多、调试起来更费劲,而且无法提前退出循环,在90%的场景下,都不如老老实实写个for循环来得实在。
Array.ForEach(arr, x => Console.WriteLine(x)); 这样的简单输出没问题,但如果你想在遇到某个特定值(比如0)时就停止遍历?对不起,它做不到。for循环,并没有带来性能上的优势,反而额外增加了一层委托调用的开销。List,你得使用其自带的ForEach实例方法,千万别搞混了。Select、Where等方法。不过切记:LINQ通常返回一个新的序列,而不会修改原始数组。说到底,数组遍历的语法本身并不复杂。真正容易出问题的,往往是那种“你以为自己在遍历一个数组”的错觉。实际上,你操作的可能是一个IEnumerable包装器,它可能延迟执行,甚至可能被多次枚举。所以,比起死记硬背语法,时刻盯紧你的变量类型和数据源的本质,才是更重要的事。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9