2010-06-12 5 views
1

Je veux être en mesure de rapidement convertir un tableau d'objets en un type différent, tel que String, mais le code suivant ne fonctionne pas:Un moyen facile de convertir un tableau d'objets en un autre type C#

String[] a = new String[2]; 
a[0] = "Hello"; 
a[1] = "World"; 
ArrayList b = new ArrayList(a); 
String[] c = (String[]) b.ToArray(); 

Et je ne veux pas avoir à faire:

String[] a = new String[2]; 
a[0] = "Hello"; 
a[1] = "World"; 
ArrayList b = new ArrayList(a); 
Object[] temp = b.ToArray(); 
String[] c = new String[temp.Length]; 
for(int i=0;i<temp.Length;i++) 
{ 
    c[i] = (String) temp[i]; 
} 

est-il un moyen facile de faire cela sans utiliser une variable temporaire? Edit: Cela se trouve dans ASP.NET.

+7

Man, combien de temps faut-il pour que les gens arrêtent d'utiliser 'ArrayList'? – ChaosPandion

+0

Hey, je suis encore nouveau à C#. Que devrais-je utiliser à la place? – Na7coldwater

+0

Utilisez des collections génériques à la place de ArrayList. Les génériques sont complètement sécurisés d'une manière que ArrayList ne pourrait jamais être. –

Répondre

5

La meilleure solution serait d'utiliser un List<string>.

+2

... et bienvenue dans un nouveau monde;) Il vaut vraiment la peine de se familiariser avec les génériques. – spender

4

Utilisez LINQ:

String[] c = b.Cast<String>().ToArray(); 

Puis-je demander pourquoi vous utilisez ArrayList en premier lieu, au lieu d'un type de collection générique?

1

Vous pouvez faire quelque chose comme

myArray.Select(mySomething => new SomethingElse(mySomething)).ToArray() 

jeter à tout ce que vous aimez :)

0

+1 pour les collections génériques telles que List<T>, -1 pour ArrayList qui est préférable d'être mis sur naphtaline.

Questions connexes