C#多维数组和数组的数组有什么区别?各在什么不同情况下使用?

 我来答
不马圆0s
2020-02-14 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:33%
帮助的人:750万
展开全部
多维数组,用[,]定义,int[2,3],这样就是一个2*3的矩阵,
也可以用[][]定义,int[2][]就是一个数组的数组,可以模拟多维数组,但不是多维数组,
int[2][]
thisArray=new
int[]{new
int[3],new
int[4]};
这样是{}里的两个数组的数组,
用处不同,不好比较,多使用多看多写代码就知道了。
非要做比较,我举一个小例子:
在做一些游戏要用到矩阵来保存数据时,用二维数组方便,用一位数组就要经过算法处理,
比如保存一个3*3的矩阵:
二维数组:
int[,]
binary=new
int[3,3];
使用是用二重循环遍历,
for(int
i=0;i<3;i++){
for(int
j=0;j<3;j++){
//操作binary[i,j]
}
}
用一位数组:
int[]
one=new
int[9];
使用是用循环遍历,要访问
for(int
i=0;i<3;i++){
for(int
j=0;j<3;j++){
//操作one[i*3+j]
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
英竹阙隽洁
2019-12-14 · TA获得超过3694个赞
知道大有可为答主
回答量:3119
采纳率:31%
帮助的人:179万
展开全部
首先定义不同
多维数组: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可定义维度不同
多维的每个维度固定,锯齿数组每个维度不固定,因此得名锯齿数组。
最后性能的差异:
多维:维度长度固定,利用这个特性,编译器可以生产更加高效的初始代码,
锯齿:数组越大维数越多,初始化的代码越多,列方向遍历的效率低
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式