Array.GetLength()和Array.Length有什么区别?

51

如何在C#中使用Array.GetLength函数?

Length属性和GetLength函数有何区别?

5个回答

90

GetLength接受一个整数参数,该参数指定您要查询的数组维度,并返回其长度。Length属性返回数组中所有项的总数:

int[,,] a = new int[10,11,12];
Console.WriteLine(a.Length);           // 1320
Console.WriteLine(a.GetLength(0));     // 10
Console.WriteLine(a.GetLength(1));     // 11
Console.WriteLine(a.GetLength(2));     // 12

16
在一维数组中,Length会返回与GetLength(0)相同的值。 - Dirk Vollmar
1
为什么a.GetLength(2)是11而不是12? - Mike Pateras
5
@Mike:因为原因1和原因2只有一个关键之差。 - Mehrdad Afshari
1
为什么a.Length的值是1320?为什么a.GetLength的值只是它们的值?这没有任何意义。 - Neo42
4
@Neo42 1320 = 10x11x12这句话的意思是:1320可以被分解为10、11和12的乘积。 - Mehrdad Afshari

16

对于一维数组,LengthGetLength(0) 的值完全相同。

对于高维数组,Length 是所有 GetLength(0..Rank-1) 值的乘积,换句话说,它总是字段数量的总和。


int[] testArray = {1, 2, 3 , 4} testArray.GetLength(1) 正确吗? - Novice Developer
不应该是 testArray.Length,而应该是 testArray.GetLength(0) - Anon.
1
Divo,“jagged arrays”是数组的数组,在每个级别上rank==1。它们不是以同样的方式多维的。 - H H

10

.Length属性返回数组中元素的数量,无论是一维还是多维数组。例如一个2x6的数组其长度为12。

.GetLength(0)方法返回多维数组中行方向上元素的数量。对于一个2x6的数组来说,它的值为2。

.GetLength(1)方法返回多维数组中列方向上元素的数量。对于一个2x6的数组来说,它的值为6。

正如上面所选择的答案所述,它们并不返回实际的元素值。


4

GetLength返回多维数组中指定维度的长度。

Length返回所有维度中元素总数的和。

  • 对于单维数组,Length == GetLength(0)
  • 对于二维数组,Length == GetLength(0) * GetLength(1)

等等。


1
不完全正确:二维数组长度 = GetLength(0) * GetLength(1) - Mehrdad Afshari
1
真是个聪明的笔误!我怎么会把 + 和 * 搞混了?!(已修复) - Jason Williams

0
在数学术语中,我们称之为m行n列,因此对于二维数组,结果是m*n的乘积。在这种情况下,GetLength(0) = m表示行数,GetLength(1)= n表示列数。例如,请参见下面的示例。
string[,] stocks ={{"RELIND","Reliance Industries","1006.30"},{"TATMOB","Tata Mobiles","504.10"},{"ALST","Allstate","800.00"}, {"GE","GE Motors","810.00"}
};

股票数组返回 GetLength(0)= 4GetLength(1)=3length =12


GetLength(0)= 3 且 GetLength(1)=2。它返回的是元素的索引(从零开始),而不是实际的元素数。我对此感到困惑了一分钟,所以我不得不澄清一下。 - user8107351

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接