将一维string数组赋值给二维string数组提示索引数量错误如何解决
C#二维数组赋值错误问题解答
核心原因
你遇到的报错本质是混淆了C#中两种不同的数组类型:矩形多维数组(用[,]声明)和交错数组(用[][]声明)。
你代码中声明的string[,] sortedString属于矩形二维数组,它是一块连续分配的内存,访问任意元素必须同时传入两个维度的索引(例如sortedString[行索引, 列索引]),只传一个索引自然会触发「索引数量错误」的异常。
你的两个疑问解答
- 是否不支持直接将数组赋值给二维数组的第二维字段?
是的,矩形多维数组没有「第二维对应独立数组」的设计,它的每个存储单元都是单个string类型的值,不存在可以直接赋值整个数组的「第二维字段」。你理解的「每个索引位置对应一个string数组」是交错数组的特性,不适用于矩形数组。 s.Split(';')已经生成了数组,为什么不能直接赋值给sortedString的指定索引位置?
正是因为你用了矩形数组,它不支持按行整体赋值。如果要实现该需求,有两种常用方案:- 改用交错数组,支持直接按行赋值一维数组,代码示例:
交错数组的每一行长度可以自由调整,完全适配// 声明交错数组,仅指定第一维长度 string[][] sortedString = new string[count][]; // 直接给指定行赋值Split生成的一维数组 sortedString[counter] = s.Split(';');Split返回结果长度不固定的场景。
2. 如果必须使用矩形数组,需要循环逐个元素赋值,注意要做长度校验避免越界:string[,] sortedString = new string[count, columns]; string[] splitRes = s.Split(';'); for (int col = 0; col < splitRes.Length && col < columns; col++) { sortedString[counter, col] = splitRes[col]; }
内容的提问来源于stack exchange,提问作者Fluesterer
相关产品推荐
相关产品推荐

