2010-04-08 15 views

risposta

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

Naturalmente, se tutto quello che pensa di fare con a è scorrere su di esso, non c'è bisogno di chiamare ToArray(). È possibile utilizzare direttamente il IEnumerable<string> tornato da Cast<string>(), ad esempio:

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

Oppure, se si dispone di un modo per convertire le stringhe di contatti, si può fare qualcosa di simile:

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

Ho dovuto solo convertirlo per passarlo come parametro a un metodo. Accettava solo String [] o Contatto []. Molto utile, grazie! –

1

Il metodo Cast doesn sembra essere più disponibile Sono venuto con un altra soluzione:

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

Procedimento CopyTo prende un array esistente e inserire gli elementi del dato indice e in avanti.

Non so se questo è molto efficiente, ma è coerente e facile da scrivere.

Problemi correlati