Quelle est la différence entre "Length", "Count ()" et "Rank" pour le tableau .net?
Length
est la propriété de l'objet tableau. Son utilisation est le moyen le plus efficace de déterminer le nombre d'éléments dans le tableau ( Array.Length dans la documentation MSDN ).
Count()
est une méthode d'extension LINQ qui fait la même chose. Cela s'applique aux tableaux, car ils sont des objets énumérables. Il est préférable d'utiliser Length
car Count()
est susceptible d'être plus cher (voir cette question pour plus d'informations et la documentation MSDN sur Count pour référence)
Rank
est la propriété qui renvoie le nombre de dimensions (tout à fait différent). Lorsque vous déclarez un tableau int[,] myArray = new int[5,10];
, la Rank
sera 2, mais il contiendra un total de 50 éléments ( MSDN sur la propriété Rank ).
EDIT: merci à Kornelije Petak pour les liens MSDN pertinents.
Length
: Nombre total d'éléments dans un tableauLongLength
: Identique à Length
, mais retourné sous la forme long
(dans le cas où c'est> = 231)Count()
: LINQ méthode d'extension qui fonctionne également avec d'autres types de collectionRank
: Nombre de dimensions dans un tableau (toujours 1
pour les vecteurs). Seulement dans .NET 3.5+.GetLength()
, GetLongLength()
: Longueur d'une certaine dimension d'un tableauGetLowerBound()
: Index de départ d'une certaine dimension d'un tableau; toujours 0
pour les vecteursGetUpperBound()
: index de fin d'une certaine dimension d'un tableau; toujours Length - 1
pour les vecteursFait intéressant, il n'y a pas de GetLongUpperBound()
ou GetLongLowerBound()
...
Maintenant que nous sommes sur le sujet, quelle est la différence entre un array et un vector dans .NET?
Les vecteurs sont ce que vous appelez normalement des tableaux "1D" en C #. Cependant, les tableaux à une dimension ne sont en réalité pas du type int[]
, mais ils sont du type int[*]
. C # ne les soutient pas directement; Cependant, ils peuvent être créés avec Array.CreateInstance
et avoir des limites inférieures non nulles. Ils sont toutefois légèrement plus lents que les vecteurs, car les vecteurs sont directement pris en charge dans le CLR. Comme les tableaux à une dimension sont en réalité rarement utilisés, C # a décidé de ne pas les prendre en charge (bien qu'il puisse les utiliser en utilisant le mot clé var
, dans un autre module qui les déclare!).
Length
est une propriété renvoyant le nombre d'éléments dans une Array
.Count()
est une extension LINQ qui fait la même chose sur une IEnumerable
. Facultativement, il peut prendre un prédicat comme paramètre et renvoyer le nombre d'éléments qui le satisfont.Rank
est une propriété renvoyant le nombre de dimensions dans une Array
.Length
est une propriété de Array
depuis C # 1.x
Count()
est une méthode d'extension de IEnumerable<T>
, car chaque T[]
implémente implicitement IEnumerable<T>
.
Notez que pour un tableau, Count()
est généralement beaucoup plus lent que Length
, car l'accès à la propriété Length
est O (1), alors que Count
est pour IEnumerable<T>
; Sur).
Rank
donne les déformations du tableau.
Bien .Count()
est pour les types IEnumerable
, List
ou ArrayList
Alors que Length
est pour Array
.
Rank
est le nombre nombre de dimensions d'un tableau.