这并不是完全符合您需求的答案,但我将提供更为普遍的答案。您可以通过多种方式实现它:
1)(无法翻译,缺少翻译内容)
T[] items = new T[lb.Items.Count];
lb.Items.CopyTo(items, 0);
var lst = new List<T>(items);
2)循环并使用foreach
添加,正如您所提到的。
使用Linq
var lst = lb.Items.Cast<T>().ToList();
或者
var lst = lb.Items.OfType<T>().ToList();
当我进行了一些性能测试例如下面,我发现将复制到数组方法是最快的,而Linq方法较慢。当然在真实世界的场景中这些并不重要。我更喜欢第三种方法(Linq)因为可读性更好。
DateTime d = DateTime.Now;
for (int i = 0; i < 10000; i++)
{
Action();
}
MessageBox.Show((DateTime.Now - d).TotalMilliseconds.ToString());
对于迭代10000次,使用大约300个项目的列表框运行多次。
1)(无法翻译,缺少翻译内容) ~100ms
约150毫秒
~250毫秒
约260毫秒