簡體   English   中英

如何比較兩個復雜的對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM