如何用for循环对交错数组jagged arrays进行访问、修改、打印操作
C# 交错数组for循环操作方法
交错数组本质是「存储数组的数组」,每个子数组的长度可以独立不同,需要用两层for循环完成元素的访问、修改和打印操作。你现有代码的循环逻辑有两处明显问题:一是C#数组下标默认从0开始而非1,二是只有单层循环无法访问到子数组内的具体元素,调整后的操作如下:
1. 遍历打印所有元素
int[][] numbers = new int[][]{ new int[]{4,5,6,7}, new int[]{6,88,9}, new int[]{4} }; // 外层循环遍历所有子数组 for (int i = 0; i < numbers.Length; i++) { // 可选:新增非空判断避免空引用异常 if(numbers[i] == null) continue; // 内层循环遍历当前子数组的所有元素 for (int j = 0; j < numbers[i].Length; j++) { Console.WriteLine($"子数组[{i}]的元素[{j}]值为:{numbers[i][j]}"); } }
2. 修改元素值
直接通过交错数组名[子数组索引][子数组内元素索引]的格式赋值即可,单个修改和批量修改示例如下:
// 单个修改:把第二个子数组(索引1)的第二个元素(索引1)从88改为100 numbers[1][1] = 100; // 批量修改:把所有元素的值加10 for (int i = 0; i < numbers.Length; i++) { if(numbers[i] == null) continue; for (int j = 0; j < numbers[i].Length; j++) { numbers[i][j] += 10; } }
注意事项
- 不要使用
i <= 数组长度的判断逻辑,数组最大下标为长度-1,写等号会触发数组越界异常 - 内层循环的边界必须取当前子数组的
Length属性,不要写死固定值,适配交错数组子数组长度不同的特性 - 生产环境建议新增子数组非空判断,避免空引用异常
内容的提问来源于stack exchange,提问作者Allen Dario
相关产品推荐
相关产品推荐

