On 08.12.2014 09:21, Hüning, Christian wrote:

However I found that Mono and .NET produce different hashcodes for the same
type from the same DLL. On second thought, this is very clear to me, since
up to recently we could have no idea how the GetHashCode() implementation in
.NET looks like.



Now for my algorithm this is a little showstopper. So I’ve got two
questions:

A)     Is there another way to achieve my scenario above?


You're not supposed to rely on what GetHashCode () is returning.
Neither in MS.NET (where its result might differ between MS.NET
versions), nor in Mono.

See http://msdn.microsoft.com/en-us/library/system.object.gethashcode%28v=vs.110%29.aspx

The only reliable and valid relations are:

Object.ReferenceEquals(a, b)
    => a.GetHashCode() == b.GetHashCode()

a.Equals(b)
    => a.GetHashCode() == b.GetHashCode()

B)      Are there plans to use .NET’s hashcode implementation in Mono now
that it’s available?

There are no such plans. Changing Object/ValueType.GetHashCode () or
RuntimeHelpers.GetHashCode () won't be enough anyway. Every
overridden GetHashCode () would need a review/change...

And since sane application don't rely on this, there isn't
much motivation for such changes ;)

Robert


_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to