C#中,多维数组和数组的数组有什么区别
展开全部
首先定义不同
多维数组: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,转载答案请明确指资料来源。
多维数组: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,转载答案请明确指资料来源。
展开全部
多维数组的长度是一致的,二维数组可以描述一个矩形点阵,比如一个2x3的二维数组,是个完整的矩阵
而交错数组(你所谓的数组的数组)中的项数是任意的,一个数组中的数组的长度可以各不相同
这种区别可以描述现实的一些事物,比如规则的教室座位,用二维数组就很好表达,图片上的像素点也是;而年月的包含关系就方便也可以用二维数组,而月日的包含关系就适合用交错数组,因为各个月份的天数不一样
参考:
https://msdn.microsoft.com/zh-cn/library/2s05feca.aspx
而交错数组(你所谓的数组的数组)中的项数是任意的,一个数组中的数组的长度可以各不相同
这种区别可以描述现实的一些事物,比如规则的教室座位,用二维数组就很好表达,图片上的像素点也是;而年月的包含关系就方便也可以用二维数组,而月日的包含关系就适合用交错数组,因为各个月份的天数不一样
参考:
https://msdn.microsoft.com/zh-cn/library/2s05feca.aspx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-06-26
展开全部
首先定义不同
多维数组: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,转载答案请明确指资料来源。
多维数组: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,转载答案请明确指资料来源。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多维数组只有一个数组,只不过数组的矩阵是二维,三维,四维...
数组的数组是一个数组中包含多个数组
数组的数组是一个数组中包含多个数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一维数组是线性的,
多维数组就不是的了。
多维数组可以看做是很多的一维数组的集合
多维数组就不是的了。
多维数组可以看做是很多的一维数组的集合
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询