.NET数组"Length"与"Count()"的区别和“;Rank"

本文关键字:quot 区别 Rank Count 数组 Length NET | 更新日期: 2023-09-27 18:01:47

"Length";Count()"answers";Rank"对于。net数组?

.NET数组"Length"与"Count()"的区别和“;Rank"

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():数组某维的起始索引;对于矢量
  • 总是0
  • GetUpperBound():数组某维的结束索引;对于矢量
  • 总是Length - 1

有趣的是,没有GetLongUpperBound()GetLongLowerBound()


既然我们已经开始讨论这个话题了,那么。net中的数组向量之间的区别是什么呢?

数组与向量

向量就是你通常所说的"1D"c#中的数组。然而,一维数组实际上不是int[]类型,而是int[*]类型。c#不直接支持它们;但是,它们可以用Array.CreateInstance创建,并且可以具有非零的下界。但是,它们比向量稍微慢一些,因为在CLR中直接支持向量。因为一维数组实际上很少使用,c#已经决定不支持它们(尽管它可以通过使用var关键字来使用它们,从另一个声明它们的模块!)。

  • Length是一个返回Array中元素个数的属性。
  • Count()是一个LINQ扩展,在IEnumerable上做同样的事情。它还可以选择将谓词作为参数,并返回满足谓词的元素数量。
  • Rank是一个返回Array的维度数的属性。

.Count()适用于IEnumerableListArrayList类型。而LengthArray .

Rank表示数组维数

LengthArray自c# 1.x的属性

Count()IEnumerable<T>的扩展方法,因为现在每个T[]都隐式实现了IEnumerable<T>

请注意,对于数组,Count()通常比Length慢得多,因为访问Length属性是O(1),而CountIEnumerable<T>,所以程序需要遍历集合并获得其计数,即O(n)。

Rank给出了数组的维度。

Length为数组的长度。
Count()是数组中条目的数量(from system.linq)
Rank返回维度数(a[][] = 2, a[] = 1)