【发布时间】:2009-03-06 11:10:02
【问题描述】:
将BindingList<T> 转换为T[] 的最简单方法是什么?
编辑:我正在为这个项目使用 3.0,所以没有 LINQ。
【问题讨论】:
-
旁白:只要您有 C# 3.0 编译器(或 VS2008),您仍然可以将 LINQ 与 .NET 3.0 一起使用。只需参考 LINQBridge。
将BindingList<T> 转换为T[] 的最简单方法是什么?
编辑:我正在为这个项目使用 3.0,所以没有 LINQ。
【问题讨论】:
好吧,如果您有 LINQ(C# 3.0 + .NET 3.5 或 LINQBridge),您可以使用 .ToArray() - 否则,只需创建一个数组并复制数据。
T[] arr = new T[list.Count];
list.CopyTo(arr, 0);
【讨论】:
在 .Net 2 中,您必须在 BindingList<T> 上使用 .CopyTo() 方法
【讨论】:
自从我注意到您使用 .net2.0 标记此帖子后,我已更改此帖子。你可以使用 List,因为它有一个 ToArray() 方法。
public T[] ToArray<T>(BindingList<T> bindingList) {
if (bindingList == null)
return new T[0];
var list = new List<T>(bindingList);
return list.ToArray();
}
注意:与其他成员展示的 CopyTo 解决方案相比,这确实是一个性能较低的解决方案。改用他们的解决方案,这个创建了两个数组,一个是结果数组,一个是 List 实例的内部数组。
【讨论】: