-
Notifications
You must be signed in to change notification settings - Fork 0
Metrics classrow gethashcode
Development build. This page describes
main, not a released package. The latest published Lodestar.Metrics is 0.4.0 — read its documentation.
Home › Metrics › Classification metrics
A hash consistent with the generated equality, with every NaN hashed alike.
public int GetHashCode()Returns — a hash over every member, each double through one rule that sends every NaN to
the same value.
Example — a NaN and its negation are different bit patterns, and still equal and hash alike.
using Lodestar.Metrics;
ClassRow left = new(1, "one", double.NaN, 0.5, 0.5, 2);
ClassRow right = new(1, "one", -double.NaN, 0.5, 0.5, 2);
bool equal = left.Equals(right); // => True
bool alike = left.GetHashCode() == right.GetHashCode(); // => TrueRemarks — the equality stays the one the compiler generates, under which every NaN equals
every other. .NET Framework, Mono and Unity hash a NaN's sign and payload bits, so without this
override two equal values could hash apart there and miss each other in a Dictionary or a
HashSet (#1285).
Applies to — net10.0, netstandard2.0.
See also — ClassRow.