What's the difference between "Length", "Count()" and "Rank" for a .NET array?
Length
is the property of an array object and using it is the most effective way to determine the count of elements in the array (Array.Length in MSDN documentation).
Count()
is a LINQ extension method that does effectively the same. It applies to arrays because arrays are enumerable objects. It's preferred to use Length
, because Count()
is likely to be more expensive (see this question for further discussion and MSDN documentation on Count for reference).
Rank
is the property that returns the number of dimensions (a different thing entirely). When you declare an array int[,] myArray = new int[5,10];
, the Rank
of it will be 2, but it will hold a total of 50 elements (MSDN on Rank property).
Length
: Total number of elements in an array LongLength
: Same as Length
, but returned as long
(in case it's >= 231)Count()
: LINQ extension method that works with other collection types as wellRank
: Number of dimensions in array (always 1
for vectors). Only in .NET 3.5+.GetLength()
, GetLongLength()
: Length of a certain dimension of an arrayGetLowerBound()
: Starting index of a certain dimension of an array; always 0
for vectorsGetUpperBound()
: Ending index of a certain dimension of an array; always Length - 1
for vectorsInterestingly, there's no GetLongUpperBound()
or GetLongLowerBound()
...
Now that we're on the topic, what is the difference between an array and a vector in .NET?
Vectors are what you normally call "1D" arrays in C#. However, 1-dimensional arrays are actually not of a type like int[]
, but they're of the type int[*]
. C# doesn't directly support them; however, they can be created with Array.CreateInstance
, and can have non-zero lower bounds. They are, however, slightly slower than vectors, because vectors are directly supported in the CLR. Because 1-dimensional arrays are actually rarely used, C# has decided not to support them (although it can use them through the use of the var
keyword, from another module which declares them!).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With