我想自己写一个List
。
所以我有一个班级List
和一个班级ListItem
。
我现在想要做的是创建不同的类,例如类car
。我想从ListItem类中推断出类car
,以便创建List
个汽车。
现在,类List
将有不同的方法,就像C#给你的那样。
我写了一个Add和Count方法,两者都有效。
这是棘手的部分...我想写一个Funktion来查找列表中的项目。问题是我不能只比较它们因为1.我不知道Objekt会是什么样子以及它会有什么成员。
2.我不想比较ListItem类的特性,因为它们与真实对象无关,它们只与List相关。
我的想法是,为每个对象创建一个列表类,因此在我的示例中,它将是从列表类推导出的carList
。这样我就可以编写一个能够比较要比较的Methode,因为它会知道ListItem对象。现在我不想为每个想要列表的对象创建一个列表类。必须以不同的方式使用sice c#还会为您提供相同的列表类。
有人可以帮忙吗?
答案 0 :(得分:-1)
您应该覆盖Equals
上的object
(继承自Car
) -
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
- 方法中,您现在可以简单地调用列表中的每个项目(如果它等于搜索到的项目):
if (currentItemInList.Equals(searchItem)) // ...
编辑:在为任何类实现Equals
时,如果您的类的对象存储在像GetHashCode
这样的散列容器中,您应该始终实现Dictionary<TKey,TValue>
。如果您想进一步阅读,请参阅MSDN for GetHashCode and Equals