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,转载答案请明确指资料来源。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-16
多维数组的长度是一致的,二维数组可以描述一个矩形点阵,比如一个2x3的二维数组,是个完整的矩阵
而交错数组(你所谓的数组的数组)中的项数是任意的,一个数组中的数组的长度可以各不相同
这种区别可以描述现实的一些事物,比如规则的教室座位,用二维数组就很好表达,图片上的像素点也是;而年月的包含关系就方便也可以用二维数组,而月日的包含关系就适合用交错数组,因为各个月份的天数不一样
参考:
https://msdn.microsoft.com/zh-cn/library/2s05feca.aspx
第2个回答  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,转载答案请明确指资料来源。
第3个回答  2009-05-12
多维数组只有一个数组,只不过数组的矩阵是二维,三维,四维...
数组的数组是一个数组中包含多个数组
第4个回答  2009-05-13
一维数组是线性的,
多维数组就不是的了。
多维数组可以看做是很多的一维数组的集合

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

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

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

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

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

c#里怎么定义多维数组?
假设一维数组的下标为x,可以把它在逻辑上转换为二维数组的下标:m = x \/ 5 n = x 5 比如你要找第一行第二列的元素,那在一维数组中就是a[1]转化为二维坐标就是b[0][1]。其实多维数组和一维数组一样,在计算机中都是用的一段连续的内存。只是他们的表现形式不一样。另外,c里边没有动态...

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

[转]C#如何定义和使用多维数组
多维数组定义如下:数组可以具有多个维度。例如,下列声明创建一个四行两列的二维数组:C#int[,] array = new int[4,2];另外,下列声明创建一个三维(4、2 和 3)数组:C#int[, ,] array1 = new int[4,2, 3];数组初始化 可以在声明数组时将其初始化,如下例所示:C#int[,] array2D = ...

C#中定义数组 int[][] myArray = new int[2][]; 两个大括号什么...
都是二维数组,第一种限定了数组有两行,但每行的数据个数不限定;第二种你书写的根本就是错的,这种数组在定义时,必须指明数组大小,否则调试时会出现异常,如:int [,] myArray=new int[2,4]l;

c#中数组和数组列表的区别
最显著的区别为:数组一旦初始化后,数组元素的数量不能再改变;而List<T>是集合,集合元素的数量可以动态变化。例如:\/\/ 数组int[] a = new int[3]; \/\/数组a只能容纳3个int类型值数组一旦初始化后,元素数量是固定的,在后续的操作中,不允许增加或减少元素的数量。\/\/List<int>集合List<int>...

相似回答