.net数组的“长度”,“数量()”和“等级”之间有什么区别?
答案 0 :(得分:50)
Length
是数组对象的属性,使用它是确定数组中元素数量的最有效方法(Array.Length in MSDN documentation)
Count()
是LINQ扩展方法,它的效果相同。它适用于数组,因为数组是可枚举的对象。最好使用Length
因为Count()
可能更贵(请参阅this question进一步讨论,MSDN documentation on Count以供参考)
Rank
是返回维度数量的属性(完全不同的东西)。声明数组int[,] myArray = new int[5,10];
时,Rank
数组将为2,但它将包含总共50个元素(MSDN on Rank property)。
答案 1 :(得分:20)
Length
: 数组中的元素总数 LongLength
:与Length
相同,但返回为long
(如果> = 2 31 )Count()
:也适用于其他集合类型的LINQ 扩展方法 Rank
:数组中维度的数量(对于向量,始终为1
)。仅限于.NET 3.5 +。GetLength()
,GetLongLength()
:长度 某个维的数组GetLowerBound()
:数组某个维度的起始索引;始终0
为矢量GetUpperBound()
:数组某个维度的结束索引;始终Length - 1
为矢量有趣的是,没有GetLongUpperBound()
或GetLongLowerBound()
...
既然我们正在讨论这个主题,那么.NET中的数组和 vector 之间有什么区别?
通常,您在C#中称为“1D”数组。但是,1维数组实际上不是int[]
类型,但它们属于int[*]
类型。 C#并不直接支持它们;但是,它们可以使用Array.CreateInstance
创建,并且可以具有非零下限。然而,它们比矢量稍慢,因为在CLR中直接支持向量。因为实际上很少使用一维数组,所以C#决定不支持它们(尽管可以通过使用var
关键字来使用它们,来自另一个声明它们的模块!)
答案 2 :(得分:2)
Length
是一个返回Array
中元素数量的属性。Count()
是一个LINQ扩展,在IEnumerable
上执行相同操作。 (可选)它可以将谓词作为参数,并返回满足它的元素数。Rank
是一个返回Array
中维度数量的属性。答案 3 :(得分:1)
Length
是自{C#1.x
Array
的属性
Count()
是IEnumerable<T>
的扩展方法,因为现在每个T[]
都隐式实现IEnumerable<T>
。
请注意,对于数组,Count()
通常比Length
慢得多,因为访问Length
属性为O(1),而{{1是Count
,因此程序需要遍历集合并获取其计数,即O(n)。
IEnumerable<T>
给出了数组的维数。
答案 4 :(得分:0)
长度是数组的大小
Count()是数组中的项目数量(来自system.linq)
Rank返回维数(a [] [] = 2,a [] = 1)
答案 5 :(得分:0)
.Count()
适用于IEnumerable
,List
或ArrayList
类型。虽然Length
适用于Array
。
Rank
用于表示数组的维数。