[.Net 2 CLR] relation entre GetHashCode() et Equals()

relation entre GetHashCode() et Equals() [.Net 2 CLR] - C#/.NET managed - Programmation

Marsh Posté le 21-11-2006 à 15:38:32    

Voici un court programme.
Que retourne t-il ?

Code :
  1. // je choppe une méthode (n'importe laquelle)
  2.   MemberInfo mi1 = typeof(XmlDocument).GetMethod("ToString" );
  3.   // je choppe son module & son metadatatoken
  4.   Module module = mi1.Module;
  5.   int token = mi1.MetadataToken;
  6.   // maintenant, dans le module, j'essaye de retrouver le même MemberInfo
  7.   MemberInfo mi2 = module.ResolveMember(token);
  8.   // Et là, j'hallucine
  9.   Console.WriteLine((mi1 == mi2) + " = (mi1 == mi2)" );
  10.   Console.WriteLine((mi1.Equals(mi2)) + " = (mi1.Equals(mi2))" );
  11.   Console.WriteLine(MemberInfo.ReferenceEquals(mi1, mi2) + " = (MemberInfo.ReferenceEquals(mi1, mi2)" );
  12.   Console.WriteLine((mi1.GetHashCode() == mi2.GetHashCode()) + " = (mi1.GetHashCode() == mi2.GetHashCode()" );


Réponse :
Faux
Faux
Faux
Vrai
 
Quelqu'un peut m'expliquer comment c'est possible ?
 
   Mose, très énervé contre MS qui sait pas gérer la compatiblité ascendante

Reply

Marsh Posté le 21-11-2006 à 15:38:32   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed