https://bugzilla.novell.com/show_bug.cgi?id=710262
https://bugzilla.novell.com/show_bug.cgi?id=710262#c1 Jonathan Pryor <jonpr...@vt.edu> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jonpr...@vt.edu --- Comment #1 from Jonathan Pryor <jonpr...@vt.edu> 2011-08-04 14:27:05 UTC --- The problem is easily summarized in `csharp`: csharp> 0.5m.GetHashCode(); 65541 csharp> 0.500m.GetHashCode(); 197108 With a quick sample app, the IL for the two differs: // var a = 0.5m; IL_0000: ldc.i4.5 IL_0001: ldc.i4.0 IL_0002: ldc.i4.0 IL_0003: ldc.i4.0 IL_0004: ldc.i4.1 IL_0005: newobj instance void valuetype [mscorlib]System.Decimal::'.ctor'(int32, int32, int32, bool, unsigned int8) // var b = 0.500m; IL_0017: ldc.i4 500 IL_001c: ldc.i4.0 IL_001d: ldc.i4.0 IL_001e: ldc.i4.0 IL_001f: ldc.i4.3 IL_0020: newobj instance void valuetype [mscorlib]System.Decimal::'.ctor'(int32, int32, int32, bool, unsigned int8) The underlying problem appears to be Decimal.GetHashCode(): public override int GetHashCode () { return (int) (flags ^ hi ^ lo ^ mid); } Since different `hi`, `lo`, and `mid` values will be present in 0.5m and 0.500m, they have different hash code values. Meanwhile, they _do_ equal each other (e.g. `0.5m.Equals(0.500m)==true`). Thus, this looks to be a bug in Decimal.GetHashCode(). -- Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - mono-bugs@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-bugs