Comment puis-je déterminer la taille d'un tableau (longueur / nombre d'éléments) en C #?
Comment puis-je déterminer la taille d'un tableau (longueur / nombre d'éléments) en C #?
Réponses:
S'il s'agit d'un tableau unidimensionnel a
,
a.Length
donnera le nombre d'éléments de a
.
Si b
est un tableau multidimensionnel rectangulaire (par exemple, int[,] b = new int[3, 5];
)
b.Rank
donnera le nombre de dimensions (2) et
b.GetLength(dimensionIndex)
obtiendra la longueur de n'importe quelle dimension donnée (indexation basée sur 0 pour les dimensions - donc b.GetLength(0)
3 et b.GetLength(1)
5).
Consultez la documentation System.Array pour plus d'informations.
Comme @Lucero le souligne dans les commentaires, il existe un concept de "tableau dentelé", qui n'est en réalité rien de plus qu'un tableau unidimensionnel de tableaux (typiquement unidimensionnels).
Par exemple, on pourrait avoir ce qui suit:
int[][] c = new int[3][];
c[0] = new int[] {1, 2, 3};
c[1] = new int[] {3, 14};
c[2] = new int[] {1, 1, 2, 3, 5, 8, 13};
Notez que les 3 membres de c
tous ont des longueurs différentes. Dans ce cas, comme précédemment c.Length
indique le nombre d'éléments de c
, (3) et c[0].Length
, c[1].Length
et c[2].Length
sera de 3, 2, et 7, respectivement.
int[][]
) ;-)
[,]
et [][]
ne semble pas être claire pour tous les débutants .NET, il peut donc être intéressant de noter que ce [][]
n'est pas un tableau multidimensionnel dans le sens de vos réponses.
b.GetLength[0] is 3 and b.GetLength[1] is 5
devrait être b.GetLength(0) and b.GetLength(1)
.
Vous pouvez consulter la documentation de Array pour trouver la réponse à cette question.
Dans ce cas particulier, vous aurez probablement besoin de Length :
int sizeOfArray = array.Length;
Mais comme il s'agit d'une question tellement fondamentale et que vous en avez sans aucun doute beaucoup d'autres comme celle-ci, plutôt que de vous dire simplement la réponse, je préfère vous dire comment trouver la réponse vous-même.
Visual Studio Intellisense
Lorsque vous tapez le nom d'une variable et appuyez sur la .
touche, cela vous montre une liste de toutes les méthodes, propriétés, événements, etc. disponibles sur cet objet. Lorsque vous mettez un membre en surbrillance, cela vous donne une brève description de ce qu'il fait.
Appuyez sur F1
Si vous trouvez une méthode ou une propriété qui pourrait faire ce que vous voulez mais que vous n'êtes pas sûr, vous pouvez déplacer le curseur dessus et appuyer sur F1 pour obtenir de l'aide. Ici, vous obtenez une description beaucoup plus détaillée ainsi que des liens vers des informations connexes.
Chercher
Les termes de recherche size of array in C#
donnent de nombreux liens qui vous indiquent la réponse à votre question et bien plus encore. L'une des compétences les plus importantes qu'un programmeur doit acquérir est de savoir comment trouver des informations. Il est souvent plus rapide de trouver la réponse vous-même, surtout si la même question a déjà été posée.
Utilisez un tutoriel
Si vous commencez tout juste à apprendre C #, vous trouverez plus facile de suivre un tutoriel. Je peux recommander les didacticiels C # sur MSDN. Si vous voulez un livre, je vous recommande Essential C # .
Dépassement de pile
Si vous ne parvenez pas à trouver la réponse par vous-même, n'hésitez pas à poster la question sur Stack Overflow. Mais nous apprécions que vous montriez que vous avez fait l'effort de trouver la réponse vous-même en premier.
pour un tableau dimensionnel
int[] listItems = new int[] {2,4,8};
int length = listItems.Length;
pour tableau multidimensionnel
int length = listItems.Rank;
Pour obtenir la taille d'une dimension
int length = listItems.GetLength(0);
Rank
propriété ne renvoie pas le nombre d'éléments, elle renvoie le nombre de dimensions.
Length
, Rank
, GetLength
)
yourArray.Length
:)
Pour un tableau à dimension unique, vous utilisez la Length
propriété:
int size = theArray.Length;
Pour les tableaux à plusieurs dimensions, la Length
propriété renvoie le nombre total d'éléments dans le tableau. Vous pouvez utiliser la GetLength
méthode pour obtenir la taille de l'une des dimensions:
int size0 = theArray.GetLength(0);
ça va comme ça: 1D:
type[] name=new type[size] //or =new type[]{.....elements...}
2D:
type[][]name=new type[size][] //second brackets are emtpy
alors que vous utilisez ce tableau:
name[i]=new type[size_of_sec.Dim]
ou vous pouvez déclarer quelque chose comme une matrice
type[ , ] name=new type [size1,size2]
Ce qui a été manqué jusqu'à présent, c'est ce qui m'a soudainement irrité:
Comment connaître la quantité d'éléments à l'intérieur de la baie? Est .Length
égal.Count
une liste?
La réponse est: la quantité d'éléments de type X qui ont été placés dans un tableau de type X créé avec new X[number]
vous devez vous emporter !
Par exemple. à l'aide d'un compteur: int countItemsInArray = 0
etcountItemsInArray++
pour chaque affectation à votre tableau.
(Le tableau que vous venez de créer avec new X[number]
a tout l'espace pour les number
éléments (références) de type X déjà alloué, vous pouvez affecter à n'importe quel endroit à l'intérieur comme votre première affectation, par exemple (si number
= 100 et le nom de la variable = a
)a[50] = new X();
.
Je ne sais pas si C # spécifie la valeur initiale de chaque endroit dans un tableau lors de la création, si ce n'est pas le cas ou la valeur initiale à laquelle vous ne pouvez pas comparer (car il peut s'agir d'une valeur que vous avez vous-même mise dans le tableau), vous devrait également suivre les emplacements à l'intérieur du tableau que vous avez déjà attribués si vous ne les attribuez pas séquentiellement à partir de 0
(auquel cas tous les emplacements inférieurs àcountItemsInArray
auxquels ils seraient attribués).)
Dans votre question, la taille d'un tableau (longueur / nombre d'éléments) selon que / est censé représenter "alternative" ou "diviser par" ce dernier doit encore être couvert (le "nombre d'éléments" que je viens de donner comme " quantité d'articles "et d'autres ont donné .Length
ce qui correspond à la valeur de number
dans mon code ci-dessus):
C # a un sizeof
opérateur ( https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/sizeof ). Il est sûr à utiliser pour les types intégrés (tels que int) (et ne fonctionne que sur les types (pas les variables)). Ainsi, la taille d'un tableau b
de type int
en octets serait b.Length * sizeof(int)
.
(En raison de tout l'espace d'un tableau déjà alloué lors de la création, comme mentionné ci-dessus, et sizeof
ne travaillant que sur les types, aucun code comme celui-ci sizeof(variable)/sizeof(type)
ne fonctionnerait ou ne donnerait la quantité d'éléments sans suivi.)