.net - Compare 2 interfaces -


interface //: iequatable<i> { }  class : {     static public bool operator !=(a a, i)     {         return !(a == i);     }      static public bool operator ==(a a, i)     {         return true;     }      public override bool equals(object obj)     {         if (obj i)             return == (i)obj;         else             return base.equals(obj);     }      public override int gethashcode()     {         return base.gethashcode();     } }  class b : {     static public bool operator !=(b b, i)     {         return !(b == i);     }      static public bool operator ==(b b, i)     {         return false;     }      public override bool equals(object obj)     {         if (obj i)             return == (i)obj;         else             return base.equals(obj);     }      public override int gethashcode()     {         return base.gethashcode();     } } public partial class form1 : form {     public form1()     {         initializecomponent();     }      private void form1_load(object sender, eventargs e)     {         list<i> iss = new list<i>();         a = new a();         b b = new b();         iss.add(a);         iss.add(b);          if (iss[0] == iss[1])             console.writeline("a == b");         else             console.writeline("a != b");          if (iss[1] == iss[0])             console.writeline("b == a");         else             console.writeline("b != a");     } } 

the output

a != b b != 

i expected

a == b b != 

could can explain it?

i'd set breakpoint in each class's equals() method , == operator, , see gets called evaluate each expression. it's not expect. guess because i not , cannot require implementors expose == operator, when 2 is compared you're doing, runtime doesn't bother looking overloaded operators , instead resorts system.object ==, performs referential check.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -