如何比较两个复杂的对象?

我想自己写一个List所以我有一节课List和一节课ListItem我现在想做的是创建区分类,例如class car我想car从类ListItem推断出该类,以便可以创建List汽车。现在,类List将具有不同的方法,就像一个C#给您的那样。我写了一个Add和一个Count方法,两者都起作用。棘手的部分到了……我想写一个Funktion来在列表中查找项目。问题是我不能仅仅因为1而比较它们。我不知道Objekt的外观和成员。2.我不想比较ListItem类的特征,因为它们与真实的Object不相关,它们仅与List相关。

我的想法是,为每个对象创建一个列表类,因此在我的示例中,carList它是从列表类推导的。这样,我可以编写一个Methode,它知道要比较什么,因为它知道ListItem对象。现在,我不想为每个我想要列表的对象创建一个列表类。sice c#还必须以其他方式为您提供相同的列表类。有人可以帮忙吗?

HimBromBeere

您应该-class覆盖Equals(继承自objectCar

class car
{
    public override bool Equals(object other) {
        var o = other as car;
        if ( o == null ) return false;

        if this.myProperty = o.myProperty return true;

        return false;
    }
}

然后,列表将使用这种倾向性来检测两辆汽车是否相等。Find现在,您可以-method简单地调用列表中的所有项目(如果它等于搜索到的项目):

if (currentItemInList.Equals(searchItem)) // ...

编辑:Equals为任何类实施时,您也应该始终实施GetHashCode,以防您的类的对象存储在诸如的散列容器中Dictionary<TKey,TValue>如果您想进一步阅读,请参见MSDN中的GetHashCode和Equals。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章