.net数组 - "长度","计数()"和"等级"之间的差异

Ale*_*dre 37 .net c# arrays

.net数组的"Length","Count()"和"Rank"之间的区别是什么?

Dyp*_*ppl 51

Length是数组对象的属性,使用它是确定数组中元素数的最有效方法(MSDN文档中的Array.Length)

Count()是一个有效的LINQ扩展方法.它适用于数组,因为数组是可枚举的对象.它是首选使用Length因为Count()可能更昂贵(请参阅此问题进一步讨论和计数的MSDN文档以供参考)

Rank是返回维度数量的属性(完全不同的东西).当声明的阵列int[,] myArray = new int[5,10];Rank的这将是2,但是它会保持总数50个元素(的MSDN上等级属性).

编辑:感谢Kornelije Petak提供相关的MSDN链接.


Meh*_*dad 20

  • Length:元素的总数在一个阵列
  • LongLength:相同Length,但返回为long(如果它> = 2 31)
  • Count():LINQ 扩展方法也适用于其他集合类型
  • Rank:数组中的数(始终1为向量).仅限.NET 3.5+.
  • GetLength(),GetLongLength():数组的某个维度长度
  • GetLowerBound():数组某个维度的起始索引; 总是0为了矢量
  • GetUpperBound():数组某个维度的结束索引; 总是Length - 1为了矢量

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


现在我们讨论的主题是,.NET中的数组向量之间有什么区别?

数组与向量

向量就是你通常称之为C#中的"1D"数组.然而,一维数组实际上不是类型int[],但它们属于这种类型int[*].C#并不直接支持它们; 但是,它们可以创建Array.CreateInstance,并且可以具有非零下限.然而,它们比矢量稍慢,因为在CLR中直接支持向量.因为实际上很少使用一维数组,所以C#决定不支持它们(虽然它可以通过使用var关键字使用它们,来自声明它们的另一个模块!).