适用于 C# 和 CLI 的 C5 通用集合库
C5 库是一组通用集合类(或容器类),适用于 C# 编程语言和 CLI 平台更高版本上的其他支持泛型的语言,由 Microsoft .NET Framework 4.6.1+、.NET Core 2.0+ 实现、.NET 5.0+ 和 Mono。
C5 库提供了广泛的经典数据结构、丰富的功能、最佳的渐近时间复杂度、记录的性能以及经过彻底测试的实现。
C5 库的目标
C5 的总体目标是成为 C# 编程语言和公共语言基础设施 (CLI) 的通用集合库,其功能、效率和质量达到或超过类似当代编程平台的可用水平。
该设计受到 Java 和 SmallTalk 集合库以及对这些库的公开批评的影响。
然而,它包含的功能和设计规律性大大超过了这些语言的标准库。
为什么还要另一个泛型集合库
已经有其他适用于 C#/CLI 的通用集合库,包括随 .NET 2.0 引入的 System.Collections.Generic 命名空间和 Peter Golde 的 Wintellect 的 Power Collections for .NET (http://powercollections.codeplex.com/)。
Microsoft .NET Framework 2.0 中实现的 CLI 通用集合库提供了有限的数据结构选择。
一般来说,CLI 框架库的方法变体较多,正交性相当差。
数组列表和链表等集合实现具有大致相同的功能,但不实现公共接口。在纳秒级效率比丰富功能更重要的情况下,这会损害库的可学习性,并且需要支持资源相当有限的运行时系统。
Peter Golde 的 Power Collections 库通过各种数据结构和算法增强了 CLI 2.0 版集合库。
然而,它接受 CLI 集合类的基本设计,因此存在一些相同的缺点,并且也不提供大多数高级功能(可更新视图、快照、定向枚举、优先级队列句柄等 updatable views, snapshots, directed enumeration, priority queue handles, ...)。
因此,我们认为,C5 提供了可用于 C#/CLI 的最强大、结构良好且可扩展的通用集合库。
C5这个名字代表什么?
这还不完全清楚,但它可能代表 C# 的哥本哈根综合集合类,尽管该库可以从 VB.NET、F# 和其他 CLI 语言(而不仅仅是 C#)使用。它与以前称为 Concorde C5/Damgaard C5/Navision C5 的 Microsoft Dynamics 产品无关,也与称为 C5(或 Chorus)的实时操作系统、C5 Corporation(系统可视化)或 Eclipse 无关。称为 C5 的插件,也不适用于雪铁龙 C5 或克尔维特 C5 或克莱夫·辛克莱 (Clive Sinclair) 命运多舛的 C5 概念车等汽车。
该名称的灵感可能来自于例如已知的多功能 C4 塑料炸药。詹姆斯·邦德电影。
所有商标均属于其所有者。
完成状态
在撰写本文时,库的设计和实现已经完成,并且已经系统地编写和应用了广泛的单元测试。
大多数库 API 文档均已到位,但需要校对。
C5 实现最初基于 .NET 2.0 构建,最近才升级到 .NET 4.0。它(尚未)使用 C# 3 和 4 引入的大量新功能,特别是 LINQ 以及协变和逆变类型(covariant and contravariant type)参数。
C5 是一个 .NET Standard 2.0 库,支持 .NET Core 2.0+、.NET 4.6.1+、通用 Windows 平台、Mono 和 Xamarin。