关于.net:你会推荐根据你的经验使用“C#和CLI的C5通用集合库”吗?

关于.net:你会推荐根据你的经验使用“C#和CLI的C5通用集合库”吗?

Would you recommend using “The C5 Generic Collection Library for C# and CLI” based on your experience with it?

这个免费的收藏库来自哥本哈根IT大学。

http://www.itu.dk/research/c5/

在第9频道有一个作者的视频。我正在尝试学习如何使用这些集合,我想知道是否有人有更多的经验或者你对这个特定的.NET集合库有什么想法。 你喜欢它们的设计方式,你喜欢它们的性能以及它们的主要问题是什么?


我过去曾经使用它,我必须做一些注意事项:

  • 该库非常好,非常快速且非常有用。它有很多非常好的数据结构,其中一些在开始使用这个库之前我不知道。
  • 它是开源的!这是一个巨大的好处。
  • 有时你没有完全想要的东西。据我的经验表明,图书馆的作者决定采取一种非常不容忍的态度,抛出一切异常。这使我添加了一些容错方法。
  • 总而言之,这是一个非常好的库,带有一些高级数据结构。不幸的是,对它的支持是非常缺乏的,正如你可以看到新版本(bugfixes等)的范围从6个月到一年不等。

    注意:从Mono 2.0开始,C5被捆绑为第三方API,我相信这是对Mono团队产品的一种精彩表现。


    我一直在使用C5库一段时间,并取得了很大的成功。我发现C5在编程接口方面提供了很大的好处。例如,在System.Collections.Generic中,IList接口不提供ArrayListLinkedList实现的所有功能。相反,在C5中,只需按住C5.IList即可访问ArrayListLinkedList的所有功能。

    同样,原作者非常谨慎地记录了许多关键操作的渐近速度,例如集合计数,包含和索引。在集合之间执行操作时,库在内部使用这些属性,以确定哪个集合作为"actor"更快。

    同时,虽然暂时没有更新,但C5文档手册是一个了不起的资源,可以提供有关库的清晰文档。


    除了那个omer van kloeten的观点。

    开源许可证是MIT(与BSD许可证相当),这意味着如果您需要对库进行更改,则不必开源更改。 (这可能是一些公司的问题)。对于GPL类型的许可证,这可能是一个问题。


    推荐阅读