.NET数组"Length"与"Count()"的区别和“;Rank"
本文关键字:quot 区别 Rank Count 数组 Length NET | 更新日期: 2023-09-27 18:01:47
"Length";Count()"answers";Rank"对于。net数组?
Length
是数组对象的属性,使用它是确定数组中元素计数的最有效方法。MSDN文档中的长度).
Count()
是一个LINQ扩展方法,它有效地完成了相同的工作。它适用于数组,因为数组是可枚举对象。最好使用Length
,因为Count()
可能更昂贵(参见这个问题的进一步讨论和MSDN关于Count的文档以获得参考)。
Rank
是返回维度数的属性(完全是另一回事)。当你声明一个数组int[,] myArray = new int[5,10];
时,它的Rank
将是2,但它将总共容纳50个元素(MSDN上的Rank属性)。
-
Length
: 数组中元素总数 -
LongLength
:与Length
相同,但返回为long
(如果它是>= 231) -
Count()
: LINQ 扩展方法与其他集合类型一起工作 -
Rank
:数组中维度的数量(对于向量总是1
)。仅支持。net 3.5+。 -
GetLength()
,GetLongLength()
: 数组尺寸长度 -
GetLowerBound()
:数组某维的起始索引;对于矢量 总是 -
GetUpperBound()
:数组某维的结束索引;对于矢量 总是
0
Length - 1
有趣的是,没有GetLongUpperBound()
或GetLongLowerBound()
…
既然我们已经开始讨论这个话题了,那么。net中的数组和向量之间的区别是什么呢?
数组与向量
向量就是你通常所说的"1D"c#中的数组。然而,一维数组实际上不是int[]
类型,而是int[*]
类型。c#不直接支持它们;但是,它们可以用Array.CreateInstance
创建,并且可以具有非零的下界。但是,它们比向量稍微慢一些,因为在CLR中直接支持向量。因为一维数组实际上很少使用,c#已经决定不支持它们(尽管它可以通过使用var
关键字来使用它们,从另一个声明它们的模块!)。
-
Length
是一个返回Array
中元素个数的属性。 -
Count()
是一个LINQ扩展,在IEnumerable
上做同样的事情。它还可以选择将谓词作为参数,并返回满足谓词的元素数量。 -
Rank
是一个返回Array
的维度数的属性。
.Count()
适用于IEnumerable
、List
或ArrayList
类型。而Length
是Array
.
Rank
表示数组维数
Length
是Array
自c# 1.x的属性
Count()
是IEnumerable<T>
的扩展方法,因为现在每个T[]
都隐式实现了IEnumerable<T>
。
请注意,对于数组,Count()
通常比Length
慢得多,因为访问Length
属性是O(1),而Count
是IEnumerable<T>
,所以程序需要遍历集合并获得其计数,即O(n)。
Rank
给出了数组的维度。
Length为数组的长度。
Count()是数组中条目的数量(from system.linq)
Rank返回维度数(a[][] = 2, a[] = 1)