我有一个自定义的BindingList,我想为其创建一个自定义的AddRange方法。
public class MyBindingList<I> : BindingList<I>
{
...
public void AddRange(IEnumerable<I> vals)
{
foreach (I v in vals)
Add(v);
}
}
我对此的问题是,使用大型集合时性能非常差。我现在正在调试的情况是尝试添加大约30,000条记录,并且需要花费无法接受的时间。
在网上研究了这个问题后,似乎问题是使用 Add
会导致每次添加都重新调整数组大小。我认为这个回答总结如下:
如果您使用 Add,则它会根据需要逐渐调整内部数组的大小(加倍)
在我的自定义 AddRange
实现中,我应该怎么做才能指定 BindingList 需要调整大小的基础项目数,而不是让它每次添加项目时都重新分配数组?