C#中,多维数组和数组的数组有什么区别

2025-02-23 01:05:02
推荐回答(3个)
回答1:

多维数组的长度是一致的,二维数组可以描述一个矩形点阵,比如一个2x3的二维数组,是个完整的矩阵
而交错数组(你所谓的数组的数组)中的项数是任意的,一个数组中的数组的长度可以各不相同
这种区别可以描述现实的一些事物,比如规则的教室座位,用二维数组就很好表达,图片上的像素点也是;而年月的包含关系就方便也可以用二维数组,而月日的包含关系就适合用交错数组,因为各个月份的天数不一样
参考:
https://msdn.microsoft.com/zh-cn/library/2s05feca.aspx

回答2:

首先定义不同
多维数组:private
int[,]
_multi

数组的数组(也即锯齿数组)private
int
[][]
_jagged;
再次实例化不同
多维:_multi=new
int
[10,10];
锯齿数组:_jagged=new
int[2][];
_jagged[0]=new
int[5];
-jagged[1]=new
int[9];
第3访问遍历方式不同:
多维:
foreach(int
e
in
_multi)
{
Console.Write(e.ToString());
}
锯齿数组:
foreach(int[]
row
in
_multi)
{
foreach(int[]
e
in
row)
{
Console.Write(e.ToString());
}
}
第4可定义维度不同
多维的每个维度固定,锯齿数组每个维度不固定,因此得名锯齿数组。
最后性能的差异:
多维:维度长度固定,利用这个特性,编译器可以生产更加高效的初始代码,
锯齿:数组越大维数越多,初始化的代码越多,列方向遍历的效率低
声明:本人所有资源均参考Effective
C#条款40,转载答案请明确指资料来源。

回答3:

首先定义不同
多维数组:private
int[,]
_multi
;
数组的数组(也即锯齿数组)private
int
[][]
_jagged;
再次实例化不同
多维:_multi=new
int
[10,10];
锯齿数组:_jagged=new
int[2][];
_jagged[0]=new
int[5];
-jagged[1]=new
int[9];
第3访问遍历方式不同:
多维:
foreach(int
e
in
_multi)
{
Console.Write(e.ToString());
}
锯齿数组:
foreach(int[]
row
in
_multi)
{
foreach(int[]
e
in
row)
{
Console.Write(e.ToString());
}
}
第4可定义维度不同
多维的每个维度固定,锯齿数组每个维度不固定,因此得名锯齿数组。
最后性能的差异:
多维:维度长度固定,利用这个特性,编译器可以生产更加高效的初始代码,
锯齿:数组越大维数越多,初始化的代码越多,列方向遍历的效率低
声明:本人所有资源均参考Effective
C#条款40,转载答案请明确指资料来源。