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

如题所述

第1个回答  2020-02-14
多维数组,用[,]定义,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]
}
}
第2个回答  2019-12-14
首先定义不同
多维数组: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可定义维度不同
多维的每个维度固定,锯齿数组每个维度不固定,因此得名锯齿数组。
最后性能的差异:
多维:维度长度固定,利用这个特性,编译器可以生产更加高效的初始代码,
锯齿:数组越大维数越多,初始化的代码越多,列方向遍历的效率低

C#多维数组和数组的数组有什么区别?各在什么不同情况下使用?
多维数组是1块连续的内存,适合固定大小的内存操作,比如2D绘图和图片、图算法、字体等 优点读写速度快,缺点大小固定。数组的数组,不连续的多块内存,用来实现一些动态数据结构,比如动态数组,存储数量变化的数据等 优点,可以按需确定大小,节约空间,缺点,分散,性能稍慢。其实也只有C\/C++ C#才提供多...

在c#中,多维数组有两种类型,分别是
一维,多维。一维数组就是比如inta[3],a就是一维数组,而指针就似乎比如int*a=new int[3]();用法其实一样,但是用指针的话就可以随时删除内存,而数组不行。并且,如果数组当做函数参数传递,会自动退化为指针。也就是传递a的地址。引用:通过给出的数组名称和这个元素在数组中的位置编号(即下标)...

c#中的数组 int[,]和int[][] 有什么区别啊
前者是多维(一个逗号的表示二维)数组,后者被称之为数组中的数组。它们最重要的差别是前者的每个元素维度必须相同(至少从内存占有上来看)。譬如,int[,] a ={{1,2,3},{1,2,3} } 表示两行三列的矩形矩阵。int[][] 就可以表示成“不规则矩阵”了。每个元素的维度可以不用相同的(当然in...

C#的数组与C语言的数组定义和使用有那些差别?
C# 数组从零开始建立索引,即数组索引从零开始。C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似。但还有一些差异应引起注意。\\x0d\\x0a\\x0d\\x0a声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面。在 C# 中,将方括号放在标识符后是不合法的语法。\\x0d\\x0a\\x0d...

c#里怎么定义多维数组?
其实多维数组和一维数组一样,在计算机中都是用的一段连续的内存。只是他们的表现形式不一样。另外,c里边没有动态的二维数组,第二维的大小必须指定的。问题补充:转换成二维数组以后怎么才能用更简单的方式a[m][n]去表达呢?如果用那个表达式的话就太麻烦了,我要进行大量的操作,容易出问题。打不...

[转]C#如何定义和使用多维数组
也可以初始化数组但不指定级别:C#int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };如果选择声明一个数组变量但不将其初始化,必须使用 new 运算符将一个数组分配给此变量。例如:C#int[,] array5;array5 = new int[,] { { 1, 2 }, { 3, 4 }, { ...

c#不定长数组如何定义?
在C#中,数组的长度可以根据需要进行定义,分为一维和多维两种情况。首先,一维数组有不定长和定长两种形式。不定长的一维整数数组可以这样定义:`int[] mf1 = new int[6];`,这表示一个包含6个元素的数组,可以后续逐个赋值。而定长的一维数组,如`int[] mf2 = new int[6]{1,2,3,4,5,6...

c#怎样定义数组
1. 定义一维数组:`数据类型[] 数组名 = new 数据类型[数组大小];`2. 定义多维数组:`数据类型[][] 数组名 = new 数据类型[维度大小1,维度大小2,...,维度大小N];`详细解释:一维数组的定义:在C#中,一维数组是最基本的数组类型。定义一维数组时,需要指定数组的数据类型和名称,以及数组的...

C# 里A[][]跟A[,]不一样吗 区别是啥
不一样,前者为锯齿数组(也叫交错数组),后者是普通的二维数组,最大区别就是锯齿数组的每一行的元素个数(或者叫列数)是可以不一样的,锯齿数组也被叫做数组的数组。比如说 \/\/ 声明一个锯齿型数组,该数组有两个元素int[][] myArray = new int[2][];\/\/ 其中第一个元素是一个含有五个...

c#不定长数组如何定义
C#没有不定长数组这种东西,一般建议用Llist泛型,当你需要里再转成数组就行了,形如 List<int> list = new List<int>();list.Add(3);list.Add(9);int[] arr = list.ToArray();

相似回答