所以我将 CollectionBase 用作自定义集合的继承类。我通过抽象类使用 CollectionBase,这样我就不会重复知识(遵循 DRY 原则)。抽象类也被定义为泛型类。这是我如何实现我的类(class):
public abstract class GenericCollectionBase<T,C> : CollectionBase
{
//Indexders, virtual methods for Add, Contains, IndexOf, etc
}
我利用它,所以我不必在 10 多个类中实现这些基本方法。
我的问题是,当我像这样覆盖 Equals 方法时,我是否做得太过分了:
public override bool Equals(object obj)
{
if (obj is C)
{
GenericCollectionBase<T, C> collB =
obj as GenericCollectionBase<T, C>;
if (this.Count == collB.Count)
{
for (int i = 0; i < this.Count; ++i)
{
if (!this[i].Equals(collB[i]))
return false;
}
return true;
}
}
return false;
}
我是不是想用我的摘要完成太多事情,还是以正确的方式做这件事?
编辑:这是为 .Net 2.0 编写的,无法访问 3.5 以利用 LINQ 之类的东西
最佳答案
我不认为你想要完成太多。如果一个抽象类根本没有任何实现,或者没有其他定义功能的方法,那么它们就是接口(interface)。
我唯一要改变的是使用 EqualityComparer<T>
而不是等于 this[i]
的比较和 collB[i]
.
关于c# - 抽象类——我是想多了还是做对了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/542218/