2 votes

Différence entre ArrayList et Array

En ce qui concerne MSDN Il est dit que "Vous pouvez définir la limite inférieure d'un tableau, mais la limite inférieure d'une liste de tableaux est toujours zéro".

Si je déclare un tableau a[10], la borne inférieure est toujours a[0].

Est-ce la limite inférieure spécifiée ici ? Si oui, comment pouvons-nous définir la limite inférieure d'un tableau, puisque l'index d'un tableau commence toujours par a[0].

Ou bien la limite inférieure indiquée dans le lien est-elle différente ?

Note : Je sais que le lien pointe vers le contenu de .NET Framework 1.1 mais toujours curieux de savoir ce qu'ils ont mentionné exactement.

4voto

Jon Skeet Points 692016

Vous pouvez créer un tableau avec une borne inférieure non nulle en utilisant Array.CreateInstance .

Notez que vous ne serez pas en mesure d'exprimer cela dans un fichier Foo[] (donde Foo est le type pertinent) à moins que vous ne le rendiez également multidimensionnel. Il existe deux types de tableau dans le CLR - un tableau vecteur (à base de zéro, unidimensionnelle) et une tableau (peut être multidimensionnel et avoir une limite inférieure non nulle).

A T[] en C# correspond toujours à un vecteur, alors qu'un fichier T[][] correspond à un tableau. Vous pouvez donc le faire :

int[][] rectangle = (int[][]) Array.CreateInstance(typeof(int),
                                       new int[]{2, 2}, // lengths
                                       new int[]{-1, -1}); // lower bounds

mais cela va échouer :

int[] rectangle = (int[]) Array.CreateInstance(typeof(int),
                                       new int[]{2}, // length
                                       new int[]{-1}); // lower bound

De même, vous ne pouvez pas le lancer vers IEnumerable<int> ou IList<int> - bien que vous puissiez itérer sur elle avec IEnumerable très bien.

Personnellement, j'éviterais comme la peste d'utiliser des tableaux à limites inférieures non nulles. Ils sont lents et pénibles à utiliser.

3voto

Daniel A. White Points 91889

La limite inférieure dans C# et VB.NET est toujours à 0 . Visual Basic 6.0 et les versions antérieures autorisaient les limites inférieures des variables. Ils l'ont supprimé lors de la réécriture du langage pour .NET.

Voici un article qui explique en détail comment procéder : http://msdn.microsoft.com/en-us/magazine/cc301755.aspx . Recherchez "Créer des tableaux avec une limite inférieure non nulle".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X