[英].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 中的數組和向量有什么區別?
向量就是您通常所說的 C# 中的“一維”arrays。 但是,一維 arrays 實際上不是int[]
這樣的類型,而是int[*]
類型。 C# 不直接支持它們; 但是,它們可以使用Array.CreateInstance
創建,並且可以具有非零下限。 但是,它們比向量稍慢,因為 CLR 直接支持向量。 因為一維 arrays 實際上很少使用,所以 C# 決定不支持它們(盡管它可以通過使用var
關鍵字來使用它們,來自另一個聲明它們的模塊。)。
Length
是返回Array
中元素數量的屬性。Count()
是 LINQ 擴展,它在IEnumerable
上執行相同的操作。 可選地,它可以將謂詞作為參數,並將返回滿足它的元素的數量。Rank
是返回Array
中維數的屬性。自 C# 1.x 起, Length
是Array
的屬性
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()
適用於IEnumerable
、 List
或ArrayList
類型。 而Length
用於Array
。
Rank
是表示數組的維數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.