簡體   English   中英

.net 數組 - “Length”、“Count()”和“Rank”之間的差異

[英].net array - difference between “Length”, “Count()” and “Rank”

.net 數組的“Length”、“Count()”和“Rank”有什么區別?

Length是數組 object 的屬性,使用它是確定數組中元素計數的最有效方法( MSDN 文檔中的 Array.Length

Count()是一個 LINQ 擴展方法,其效果相同。 它適用於 arrays 因為 arrays 是可枚舉對象。 最好使用Length因為Count()可能更昂貴(請參閱此問題以進行進一步討論和 有關 Count 的 MSDN 文檔以供參考)

Rank是返回維數的屬性(完全不同)。 當你聲明一個數組int[,] myArray = new int[5,10]; 它的Rank將為 2,但它總共包含 50 個元素( MSDN on Rank property )。

編輯:感謝 Kornelije Petak 提供相關的 MSDN 鏈接。

  • Length數組中元素的總數
  • LongLength :與Length相同,但返回long (如果它是 >= 2 31
  • Count() : LINQ擴展方法也適用於其他集合類型
  • Rank :數組中的數(向量始終為1 )。 僅在 .NET 3.5+ 中。
  • GetLength() , GetLongLength() : 數組某個維度長度
  • GetLowerBound() :數組某個維度的起始索引; 向量總是0
  • GetUpperBound() : 數組某個維度的結束索引; 總是Length - 1表示向量

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


現在我們進入主題,.NET 中的數組向量有什么區別?

Arrays 與向量

向量就是您通常所說的 C# 中的“一維”arrays。 但是,一維 arrays 實際上不是int[]這樣的類型,而是int[*]類型。 C# 不直接支持它們; 但是,它們可以使用Array.CreateInstance創建,並且可以具有非零下限。 但是,它們比向量稍慢,因為 CLR 直接支持向量。 因為一維 arrays 實際上很少使用,所以 C# 決定不支持它們(盡管它可以通過使用var關鍵字來使用它們,來自另一個聲明它們的模塊。)。

  • Length是返回Array中元素數量的屬性。
  • Count()是 LINQ 擴展,它在IEnumerable上執行相同的操作。 可選地,它可以將謂詞作為參數,並將返回滿足它的元素的數量。
  • Rank是返回Array中維數的屬性。

自 C# 1.x 起, LengthArray的屬性

Count()IEnumerable<T>的擴展方法,因為現在每個T[]都隱式地實現了IEnumerable<T>

請注意,對於數組, Count()通常比Length慢得多,因為訪問Length屬性是 O(1),而Count是針對IEnumerable<T>的,因此程序需要通過集合 go 並獲取其計數,即是 O(n)。

Rank給出了數組的維度。

長度是數組的大小
Count() 是數組中的項目數量(來自 system.linq)
Rank 返回維數 (a[][] = 2, a[] = 1)

那么.Count()適用於IEnumerableListArrayList類型。 Length用於Array

Rank是表示數組的維數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM