[英]How to compare Two Complex Objects?
我想自己寫一個List
。 所以我有一個類List
和一個類ListItem
。 我現在想做的是創建差異類,例如class car
。 我想從類ListItem推斷出car
類,以便創建汽車List
。 現在,類List
將具有不同的方法,就像一個C#給您的那樣。 我寫了一個Add和一個Count方法,兩者都起作用。 棘手的部分到了……我想寫一個Funktion在列表中查找項目。 問題是我不能僅僅將它們進行比較,因為1.我不知道Objekt的外觀和成員。 2.我不想比較ListItem類的特征,因為它們與真實的Object不相關,而與List相關。
我的想法是,為每個對象創建一個列表類,因此在我的示例中,它將是從列表carList
導出的carList
。 這樣,我可以編寫一個Methode,它知道要比較什么,因為它知道ListItem對象。 現在,我不想為每個我想要列表的對象創建一個列表類。 sice c#還必須以其他方式為您提供相同的列表類。 有人可以幫忙嗎?
您應該在Car
類上重寫Equals
(從object
繼承):
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
,如果類的對象存儲在諸如Dictionary<TKey,TValue>
類的哈希容器中,則還應該始終實現GetHashCode
。 如果您想進一步閱讀,請參見MSDN中的GetHashCode和Equals。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.