如何初始化特殊数组及矩形不规则数组?int[,][] = { // something }
嘿,我来帮你搞清楚怎么初始化int[,][]这种混合数组类型!这其实是一个二维矩形数组,其中每一个元素又都是一个一维交错数组(说白了就是每个子数组的长度可以不一样,不用整齐划一)。下面给你两种实用的初始化方式:
1. 声明时直接初始化
如果子数组的内容和长度是确定的,可以直接在声明时一次性完成初始化,注意要显式用new int[]创建每个子数组:
int[,][] mixedArray = { // 矩形数组的第一行:两个子数组 { new int[] { 1, 2 }, new int[] { 3, 4, 5 } }, // 矩形数组的第二行:另外两个子数组(长度可以和第一行的不一样) { new int[] { 6 }, new int[] { 7, 8, 9, 10 } } };
这里mixedArray是一个2行2列的矩形数组,你可以看到:
mixedArray[0,0]是长度为2的数组[1,2]mixedArray[0,1]是长度为3的数组[3,4,5]- 完全不用强制所有子数组长度相同,这就是它的灵活之处。
2. 分步初始化(更灵活)
如果子数组的长度需要动态确定(比如根据变量计算),可以先创建矩形数组的框架,再逐个给每个位置赋值子数组:
// 先创建一个2行3列的矩形数组框架,每个元素默认是null int[,][] mixedArray = new int[2,3][]; // 给每个位置的子数组赋值,长度可以按需定义 mixedArray[0,0] = new int[] { 10, 20 }; mixedArray[0,1] = new int[5]; // 先创建长度为5的空数组,之后可以逐个填充元素 mixedArray[0,2] = new int[] { 30 }; mixedArray[1,0] = new int[] { 40, 50, 60 }; mixedArray[1,1] = Array.Empty<int>(); // 甚至可以是空数组 mixedArray[1,2] = new int[] { 70, 80 };
这种方式适合需要动态生成子数组的场景,比如从文件读取数据后再填充内容。
小提醒
别尝试省略new int[]直接写嵌套大括号,比如{ { {1,2}, {3} }, { {4}, {5,6} } }——C#编译器没法自动推断int[,][]的结构,必须显式声明每个子数组的创建。
内容的提问来源于stack exchange,提问作者J. Doe
相关产品推荐
相关产品推荐

