在网上没能查到相关的概念,官方文档里也没有看到对维数的较为清晰地定义,感觉只是模糊的说数组可以有多个维度。
那么本人的问题在于,多下标数组的维数到底是什么意思呢?
书里提供的例子如下
那么本人的问题在于,多下标数组的维数到底是什么意思呢?
书里提供的例子如下
int[,] array1 = new int[,] { { 1, 2, 3 }, { 4, 5, 6} };
通过GetLength方法可以得到数组信息如下:
int Array1 = array1.GetLength(0); Console.WriteLine (" " + Array1); int Array2 = array1.GetLength(1); Console.WriteLine(" " + Array2);
输出结果为“2\n3”
书中对GetLength方法的描述是其返回数组某一维的长度,那么这样翻译以上两行代码,其含义能否为输出数组第0维长度和数组的第1维长度呢?
但这产生了两个令本人费解的问题:
1.在这之前学过的单下标数组应该是最简单的数组了吧?例如:
int [] c = new int [12]
定义了一个包含有12个元素的单下标数组,我们称其为一维数组。那么多下标数组中的“第0维长度”是什么?或许有0维数组的概念?书上说返回的第0维长度可以认为是第0列,那么能否说明数组的维数就是列数?第几维就是第几列?
2.能看出来GetLength方法的第一行代码输出了数组的行数,第二行代码输出了数组的列数,麻烦通过问题1的答案解释一下这种输出的原因?
c#小白一枚,高手勿喷
解决方案
5
把多维数组立着写,如下图。那么,0维的长度就是4。
{
{ /**/},
{ /**/},
{ /**/},
{ /**/},
};
假设把/**/换成:
{/****/},
{/****/},
{/****/},
那么,第1维的长度就是3。
假设把/****/换成:
1,2
那么,他们就是第2维,长度为2。
总结:
{
{ /**/},
{ /**/},
{ /**/},
{ /**/},
};
假设把/**/换成:
{/****/},
{/****/},
{/****/},
那么,第1维的长度就是3。
假设把/****/换成:
1,2
那么,他们就是第2维,长度为2。
总结:
int[,,] mda = new int[4, 3, 2] { { {1,2}, {2,3}, {4,4 }, }, { {0,0}, {0,0}, {0,0}, }, { {0,0}, {0,0}, {0,0}, }, { {0,0}, {0,0}, {0,0}, }, };
15
还不理解的话,创建的时候写全了:
int[,] array1 = new int[2,3] { { 1, 2, 3 }, { 4, 5, 6} };
假如你写的长度是对的话,编译器不会出错
否则你试下3,2,会有错误提示的