c# - What can cause dictionary.ContainsKey(dictionary.Keys.First()) to return false? -


dictionary.keys.first().gethashcode() == dictionary.keys.first().gethashcode() returns true dictionary.keys.first() == dictionary.keys.first() returns true

what's missing? why can't dictionary find object?

type of dictionary: dictionary<exceptionwrapper<exception>, list<int>>.

here implementation of exceptionwrapper.equals , exceptionwrapper.gethashcode:

public override int gethashcode() {   return (typeof(texception).fullname + exception.message + exception.stacktrace).gethashcode(); }  public override bool equals(object obj) {   return      obj exceptionwrapper<texception> && (obj exceptionwrapper<texception>).gethashcode() == gethashcode(); } 

the key first added dictionary<,> when had 1 hash code. after object "mutated" give state hash code new number.

the dictionary<,> therefore in invalid state.

do not mutate object might key in hashtable somewhere, in way changes hash code of object.


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -