我想将项目转换为String数组或我用来填充ListBox.DataSource的类型。该类型已重写ToString()但我似乎无法将其转换,甚至不能转换为String []。
String[] a = (String[])ListBox1.Items;
Contacts[] b = (Contacts[])ListBox1.Items;
答案 0 :(得分:24)
string[] a = ListBox1.Items.Cast<string>().ToArray();
当然,如果您计划使用a
进行迭代,则不必调用ToArray()。您可以直接使用IEnumerable<string>
返回的Cast<string>()
,例如:
foreach (var s in ListBox1.Items.Cast<string>()) {
do_something_with(s);
}
或者,如果你有办法将字符串转换为联系人,你可以这样做:
IEnumerable<Contacts> c = ListBox1.Items.Cast<string>().Select(s => StringToContact(s));
答案 1 :(得分:1)
Cast
方法似乎不再可用。我想出了另一个解决方案:
String[] array = new String[ListBox.Items.Count]
ListBox.Items.CopyTo(array, 0);
CopyTo
方法采用现有数组并在给定索引处插入项目并转发。
我不知道这是否非常有效,但它一致且易于编写。