VirtualObjectListView和FastObjectListView C#的差异

时间:2014-07-23 16:04:12

标签: c# objectlistview

我一直在用Phillip Piper的这个令人敬畏的控制进行一些测试,但我也有一些我无法回答的问题(在烹饪书,源代码示例等等......)。

加载和使用大型列表时FastOlv和VirtualOlv之间的真正区别是什么?

想象一下,仅用于测试目的: 我有一个在FastOlv和VirtualOlv上显示的List。 此列表包含1.000.000个文档(加载到内存中),此列表不可编辑(不添加,删除或更改文档)。

我已将此列表加载到两个OLV并且性能相同,我的意思是,加载时间(例如,在这些OLV上从上到下)是相同的。

在FastOlv上使用VirtualOlv有什么好处? 是否可以在IVirtualListDataSource的实现中为特定情况执行更好的操作?你能分享一些例子吗?

感谢您对此的见解。

鼠星

2 个答案:

答案 0 :(得分:4)

VirtualObjectListView是一个抽象基类,可用于实现您自己的虚拟列表,其内容来自您的数据存储。

FastObjectListViewVirtualObjectListView的一种实现,因此对于大型列表而言,它的行为与正常ObjectListView相比要快得多。

答案 1 :(得分:2)

好问题。您可能需要查看源代码注释。作者并不是非常具体,但阅读评论和代码有助于了解差异。

实际上FastObjectListView来自VirtualObjectListView。但它使用FastObjectListDataSource作为VirtualListDataSource,而不是VirtualListVersion1DataSource使用的默认VirtualObjectListView。两者都派生自AbstractVirtualListDataSource,但FastObjectListDataSource覆盖/实现了更多功能,包括搜索和排序等。

基本上看起来FastObjectListView通过实现与普通VirtualObjectListView一样的功能来扩展ObjectListView。它还实现了GroupingStrategy,您也可以在任何VirtualListDataSource上手动添加。{/ p>

所以看来,只要您只在列表中显示大量项目,就没有预期的性能差异,因为FastObjectListView实际上是VirtualObjectListView并且具有可以增加的功能可以选择使用。