web-dev-qa-db-fra.com

Tableau .net - différence entre "Length", "Count ()" et "Rank"

Quelle est la différence entre "Length", "Count ()" et "Rank" pour le tableau .net?

37
Alexandre

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.

49
Dyppl
  • Length: Nombre total d'éléments dans un tableau
  • LongLength: 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 collection
  • Rank: 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 tableau
  • GetLowerBound(): Index de départ d'une certaine dimension d'un tableau; toujours 0 pour les vecteurs
  • GetUpperBound(): index de fin d'une certaine dimension d'un tableau; toujours Length - 1 pour les vecteurs

Fait 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?

Tableaux contre vecteurs

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!).

20
Mehrdad
  • 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.
2
user703016

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.

1
Danny Chen



0
Fredrik Leijon

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.

0
Robin Maben