Question

J'aimerais renseigner un arraylist en spécifiant une liste de valeurs, exactement comme pour un tableau entier, mais je ne sais pas comment le faire sans appels répétés à l'option "add". méthode.

Par exemple, je souhaite affecter {1, 2, 3, "chaîne1", "chaîne2". } à un artiste. Je sais que pour d’autres tableaux, vous pouvez effectuer cette tâche, par exemple:

int[] IntArray = {1,2,3};

Existe-t-il une méthode similaire pour un arrayliste? J'ai essayé la méthode addrange mais la méthode accolade n'implémente pas l'interface ICollection.

Était-ce utile?

La solution

La liste de tableaux a ctor qui accepte ICollection, qui est implémenté par la classe Array.

object[] myArray = new object[] {1,2,3,"string1","string2"};
ArrayList myArrayList = new ArrayList(myArray);

Autres conseils

En fonction de la version de C # que vous utilisez, vous avez différentes options.

C # 3.0 comporte des initialiseurs de collection, détaillés à Blog de Scott Gu

Voici un exemple de votre problème.

ArrayList list = new ArrayList {1,2,3};

Et si vous initialisez un objet de collection, la plupart des constructeurs utilisent des composants similaires à AddRange, bien que, une fois encore, ce ne soit peut-être pas une option.

Vos commentaires impliquent que vous avez choisi ArrayList car il s'agit du premier composant trouvé.

En supposant que vous recherchiez simplement une liste d’entiers, c’est probablement le meilleur moyen de le faire.

List<int> list = new List<int>{1,2,3};

Et si vous utilisez C # 2.0 (qui contient des génériques, mais pas les initialiseurs de collection).

List<int> list = new List<int>(new int[] {1, 2, 3});

Bien que le format int [] puisse ne pas être correct dans les anciennes versions, vous devrez peut-être spécifier le nombre d'éléments dans le tableau.

Je suppose que vous n'utilisez pas C # 3.0, qui contient des initialiseurs de collection. Si la surcharge liée à la création d'un tableau temporaire ne vous dérange pas, procédez comme suit dans la version 1.1 / 2.0:

ArrayList list = new ArrayList(new object[] { 1, 2, 3, "string1", "string2"});

(genre de réponse à ma propre question mais ...)

La chose la plus proche que j'ai trouvée à ce que je veux est d'utiliser la méthode ArrayList.Adapter:

object[] values = { 1, 2, 3, "string1", "string2" };
ArrayList AL = new ArrayList();
AL = ArrayList.Adapter(values);

//or during intialization
ArrayList AL2 = ArrayList.Adapter(values);

Cela suffit pour ce dont j'ai besoin, mais j'espérais que cela pourrait être fait en une ligne sans créer le tableau temporaire comme l'avait suggéré quelqu'un d'autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top