【发布时间】:2009-11-25 13:27:51
【问题描述】:
我正在 C# .NET 2.0 中实现 AVL 二叉树数据结构(可能会移至 3.5)。我已经达到了它通过我的初始单元测试而无需实现任何框架级接口的程度。
但是现在,只要查看 FCL,我就会看到一大堆接口,包括非泛型和泛型接口,我可以实现这些接口,以确保我的类与语言特性和其他数据结构很好地配合使用。
目前唯一明显的选择(至少对我而言)是枚举样式接口之一,它允许调用者在 foreach 循环中使用树,并且稍后可能与 Linq 一起使用。但是哪一个(或更多)?
以下是我目前正在考虑的接口:
- IEnumerable 和 IEnumerable
<T> - IEnumerator 和 IEnumerator
<T> - IComparable 和 IComparable
<T> - IComparer 和 IComparer
<T> - ICollection 和 ICollection
<T> - IEquatable 和 IEquatable
<T> - IEqualityComparer 和 IEqualityComparer
<T> - ICloneable
- IConvertible
是否有任何已发布的在线指南或书籍形式的指南,提供有关实施哪些框架接口以及何时实施的建议?
显然对于某些接口,如果您不想提供该功能,就不要实现整个接口。但似乎 FCL 类(例如 Collection 类)中存在某些约定,也许我们在构建自定义数据结构时也应该遵循这些约定。
理想情况下,这些建议将就何时使用 IComparer 或 IEqualityComparer、IEnumerable 或 IEnumerator 等问题提供指导?或者,如果你实现了一个泛型接口,你是否也应该实现非泛型接口?等等。
或者,如果您可以根据自己的经验提供指导,那同样有用。
【问题讨论】:
标签: c# .net data-structures interface