c# - nested List Compare Equals -


i have c# class

 public class entryclass     {         public string field { get; set; }         public list<fieldkeyvaluepair<string, string>> fieldkeyvalpairs { get; set; }          public bool equals(entryclass other)         {             return field.equals(other.field)                 && fieldkeyvalpairs.equals(other.fieldkeyvalpairs);         }          public override bool equals(object obj)         {             if (referenceequals(null, obj)) return false;             if (referenceequals(this, obj)) return true;             if (obj.gettype() != this.gettype()) return false;             return equals((entryclass)obj);          }     }      public class fieldkeyvaluepair<k, v>     {         public k key { get; set; }         public v value { get; set; }          public bool equals(fieldkeyvaluepair<k, v> other)         {             return key.equals(other.key)                 && value.equals(other.value);         }          public override bool equals(object obj)         {             if (referenceequals(null, obj)) return false;             if (referenceequals(this, obj)) return true;             if (obj.gettype() != this.gettype()) return false;             return equals((fieldkeyvaluepair<k, v>)obj);         }      } 

trying assert.istrue(expected.sequenceequal(actual)); gives me false, seeing when expected , actual has same fieldkeyvalpairs expression hits false && fieldkeyvalpairs.equals(other.fieldkeyvalpairs);

edit , expected , actual of type

 list<entryclass> expected = new list<entryclass>(); // todo:           list<entryclass> actual = new list<entryclass>(); 

may forgot override gethashcode(). comparison algorithm compares hash code first speed computation.

see answer more info: why important override gethashcode when equals method overridden?


Comments