2010-04-08 2 views

Répondre

22
string[] a = ListBox1.Items.Cast<string>().ToArray(); 

Bien sûr, si tout ce que vous comptez faire avec a itérer dessus, vous ne devez pas appeler ToArray(). Vous pouvez directement utiliser le IEnumerable<string> retourné de Cast<string>(), par exemple:

foreach (var s in ListBox1.Items.Cast<string>()) { 
    do_something_with(s); 
} 

Ou, si vous avez un moyen de convertir les chaînes en contacts, vous pouvez faire quelque chose comme ceci:

IEnumerable<Contacts> c = ListBox1.Items.Cast<string>().Select(s => StringToContact(s)); 
+0

Je n'ai eu qu'à le convertir pour le passer en paramètre à une méthode. Il a seulement accepté String [] ou Contact []. Très utile, merci! –

1

La méthode Cast doesn ne semble plus disponible. Je suis venu avec une autre solution:

String[] array = new String[ListBox.Items.Count] 
ListBox.Items.CopyTo(array, 0); 

La méthode CopyTo prend un tableau existant et insérez les éléments à l'index donné et en avant.

Je ne sais pas si c'est très efficace, mais c'est cohérent et facile à écrire.